Get Appointment

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ API ΠΈ REST?

API (Application Programming Interface β€” интСрфСйс ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ программирования) β€” это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ прилоТСниям ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. REST, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, прСдставляСт собой ΡΡ‚ΠΈΠ»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с сСрвСрами для получСния Π΄Π°Π½Π½Ρ‹Ρ….

REST ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ рСсурсы для прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСрС, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ изобраТСния, HTML-страницы, Π°ΡƒΠ΄ΠΈΠΎ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎ. ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ доступ ΠΊ этим рСсурсам Ρ‡Π΅Ρ€Π΅Π· прСдставлСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… JSON, XML, HTML ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ….

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ REST API

1. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ интСрСсов ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра. Π­Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ сСрвСра ΠΈ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ прилоТСния, позволяя Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π±Π΅Π· измСнСния взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром.

2. Π‘Π΅Π· сохранСния состояния (stateless)

REST API Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π±Π΅Π· сохранСния состояния Π½Π° сСрвСрС. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ запрос ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса. Π­Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ систСмы, позволяя сСрвСру ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ большСС количСство запросов ΠΈ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ послС частичных сбоСв.

3. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ эффСктивности сСти ΠΈ сниТСния Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прСдставлСния рСсурсов. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного ΠΈΠ»ΠΈ нСявного указания рСсурсов ΠΊΠ°ΠΊ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… сСрвСра. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвСр ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы.

4. Π£Π½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ способ для сСрвСров ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ взаимодСйствия с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, нСзависимо ΠΎΡ‚ устройства ΠΈΠ»ΠΈ прилоТСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ рСсурсов происходит Ρ‡Π΅Ρ€Π΅Π· URI, Π° манипуляция рСсурсами β€” с использованиСм HTTP ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ GET, POST, PUT, DELETE.

5. Π“ΠΈΠΏΠ΅Ρ€ΠΌΠ΅Π΄ΠΈΠ° ΠΊΠ°ΠΊ двиТущая сила состояния прилоТСния (HATEOAS)

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ API Π³ΠΈΠΏΠ΅Ρ€ΠΌΠ΅Π΄ΠΈΠ°-ссылки, позволяя ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ Π½Π°Π²ΠΈΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ рСсурсам Π±Π΅Π· знания структуры URI. Π­Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ доступ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΊ рСсурсам ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² структурС прилоТСния.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ REST API

  • ИспользованиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вмСсто Π³Π»Π°Π³ΠΎΠ»ΠΎΠ² Π² путях эндпоинтов.
  • ЛогичСская Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ эндпоинтов для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ структуры API.
  • ИспользованиС мноТСствСнного числа ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² рСсурсов для Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, /articles/12).
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок с ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… сообщСний для понимания ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ.
  • Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ, сортировка ΠΈ пагинация Π΄Π°Π½Π½Ρ‹Ρ… для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сСрвСр ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ скорости прилоТСния ΠΈ эффСктивного использования рСсурсов сСрвСра.
  • ВСрсионированиС API для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ старых ΠΈ Π½ΠΎΠ²Ρ‹Ρ… вСрсий ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

REST API являСтся ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом для создания эффСктивных ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π²Π΅Π±-сСрвисов. БлСдуя ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ API, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ соврСмСнным стандартам Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Avatar
Raman Sapezhka

CEO Plantago/CTO