REST API

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° API

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° API для Π²Π΅Π±-сСрвисов с фокусом Π½Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ удобство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

85%
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ владСния
5+ Π»Π΅Ρ‚
ΠžΠΏΡ‹Ρ‚ с 2018 Π³ΠΎΠ΄Π°
RESTful
АрхитСктурный ΡΡ‚ΠΈΠ»ΡŒ

О Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ REST API

REST (Representational State Transfer) β€” это Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ для проСктирования сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. RESTful API ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ стандартизированный способ взаимодСйствия систСм Ρ‡Π΅Ρ€Π΅Π· HTTP, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±Π΅Π·ΡΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ стандартныС HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для создания, чтСния, обновлСния ΠΈ удалСния рСсурсов.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹

  • Π‘Π΅Π· состояния β€” ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ запрос содСрТит всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  • ΠšΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр β€” Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ отвСтствСнности ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром
  • ΠšΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ β€” ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ сСбя ΠΊΠ°ΠΊ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚
  • Π•Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΉ интСрфСйс β€” ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ идСнтификация ΠΈ манипуляция рСсурсами
  • ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Π°Ρ систСма β€” АрхитСктура ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· иСрархичСских ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ
  • Код ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ β€” Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

РаспространСнныС случаи использования

REST API ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для соврСмСнной Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ:

  • БэкСнды ΠΈ сСрвисы ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
  • ΠšΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΡ одностраничных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (SPA)
  • ВзаимодСйствиС Π² микросСрвисной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌΠΈ сторонами ΠΈ партнСрскиС API
  • ВнутрСнняя коммуникация ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами
  • ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ API для Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

Мой ΠΏΡƒΡ‚ΡŒ Π² REST API

Π― Π½Π°Ρ‡Π°Π» Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ REST API Π² 2018 Π³ΠΎΠ΄Ρƒ с Laravel для бэкСндов ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ SPA Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΎΠ². Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ я ΠΏΠ΅Ρ€Π΅ΡˆΠ΅Π» ΠΎΡ‚ простых CRUD API ΠΊ слоТным систСмам с Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ частоты запросов, вСрсионированиСм ΠΈ комплСксной Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ.

ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ бэкСнды

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… REST API для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ iOS ΠΈ Android, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, push-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈ ΠΎΡ„Π»Π°ΠΉΠ½-синхронизации.

БСзопасныС API

РСализация комплСксных ΠΌΠ΅Ρ€ бСзопасности, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ JWT Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ частоты запросов, Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ API ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Мой ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с REST API

ИмСя Π±ΠΎΠ»Π΅Π΅ 5 Π»Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ REST API, я создавал API для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, начиная ΠΎΡ‚ простых Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… инструмСнтов Π΄ΠΎ высоконагруТСнных ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… API, ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… тысячи запросов Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ RESTful Π΄ΠΈΠ·Π°ΠΉΠ½Π°
АутСнтификация ΠΈ авторизация
Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ вСрсионирования API
ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ частоты запросов
Валидация ΠΈ санитизация Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок ΠΈ статус-ΠΊΠΎΠ΄Ρ‹
Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API (OpenAPI/Swagger)
ВСстированиС ΠΈ автоматизация тСстов
ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ
РСализация Π²Π΅Π±Ρ…ΡƒΠΊΠΎΠ²
ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ API Gateway

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ API

  • API ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ элСктронной ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ†ΠΈΠΈ β€” REST API для мобильного прилоТСния ΠΈ SPA с 50+ эндпоинтами
  • API CRM систСмы β€” Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ REST API с доступом Π½Π° основС Ρ€ΠΎΠ»Π΅ΠΉ
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Ρ… шлюзов β€” REST API для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ²
  • API аналитичСской ΠΏΠ°Π½Π΅Π»ΠΈ β€” Π’Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ API для Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ
  • API ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌΠΈ сторонами β€” ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ API для партнСрских ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ

Π”ΠΈΠ·Π°ΠΉΠ½ API ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π° API

Π‘Π»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ отраслСвым стандартам ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π° API:

ИмСнованиС рСсурсов

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, мноТСствСнныС ΠΈΠΌΠ΅Π½Π° рСсурсов с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ

Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚Π°

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ JSON ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ статус-ΠΊΠΎΠ΄Π°ΠΌΠΈ

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… с понятными сообщСниями

ВСрсионированиС

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ вСрсионирования Π½Π° основС URL ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

ΠžΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ API:

JWT Π’ΠΎΠΊΠ΅Π½Ρ‹ OAuth2 API ΠšΠ»ΡŽΡ‡ΠΈ Базовая аутСнтификация Laravel Sanctum Passport

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ тСстированиС

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ API

КомплСксная докумСнтация API для удобства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²:

  • OpenAPI/Swagger β€” Бтандартизированная докумСнтация API
  • API Blueprint β€” ДокумСнтация API Π½Π° основС Markdown
  • Postman ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ β€” Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ тСстированиС ΠΈ докумСнтация API
  • ДокумСнтация Laravel API β€” АвтоматичСская гСнСрация Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

Π‘Ρ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΠΈ тСстирования

НадСТныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ для обСспСчСния надСТности API:

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ тСстированиС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ²
Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ тСстированиС
Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ тСстированиС
ВСстированиС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ
ВСстированиС бСзопасности
НагрузочноС тСстированиС

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ владСния

ΠžΠ±Ρ‰Π΅Π΅ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ 85%
Π”ΠΈΠ·Π°ΠΉΠ½ API 88%
Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ 82%
Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 80%
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 83%

БыстрыС Ρ„Π°ΠΊΡ‚Ρ‹

ΠžΠΏΡ‹Ρ‚: 5+ Π»Π΅Ρ‚
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ API: 25+
Π­Π½Π΄ΠΏΠΎΠΈΠ½Ρ‚Ρ‹: 200+
ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния: 10+
Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: JWT/OAuth2

НуТна Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° API?

Π“ΠΎΡ‚ΠΎΠ² ΠΎΠ±ΡΡƒΠ΄ΠΈΡ‚ΡŒ ваши трСбования ΠΊ API

Π‘Π²ΡΠ·Π°Ρ‚ΡŒΡΡ со ΠΌΠ½ΠΎΠΉ