Get Appointment

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ соврСмСнном Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ интСграция API стала Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Компании ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ REST ΠΈ GraphQL API для обСспСчСния гибкости, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтскими ΠΈ сСрвСрными прилоТСниями. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ аспСктом ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… API являСтся Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, особСнно ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π·Π°Ρ‰ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. НаиболСС распространСнныС ΠΈ эффСктивныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ сСгодня β€” JWT (JSON Web Token) ΠΈ Passport. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим соврСмСнныС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ REST ΠΈ GraphQL API с использованиСм этих Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΈΡ… прСимущСства, особСнности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ практичСскиС Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ.

REST API: прСимущСства ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

REST (Representational State Transfer) β€” это Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ сСрвСром осущСствляСтся посрСдством стандартных HTTP-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (GET, POST, PUT, DELETE ΠΈ Π΄Ρ€.). REST API отличаСтся простотой, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒΡŽ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Для обСспСчСния бСзопасности REST API Ρ‡Π°Ρ‰Π΅ всСго примСняСтся аутСнтификация Π½Π° основС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ².

JWT для REST API

JWT β€” это ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈ бСзопасный способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сторонами Π² Π²ΠΈΠ΄Π΅ JSON-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ сСрвСр создаСт JWT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² дальнСйшСм отправляСтся ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС ΠΊ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌ рСсурсам отправляСт Π΅Π³ΠΎ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Authorization. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° JWT:

  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ (Ρ‚ΠΎΠΊΠ΅Π½ подписываСтся сСкрСтным ΠΊΠ»ΡŽΡ‡ΠΎΠΌ ΠΈΠ»ΠΈ асиммСтричной ΠΏΠ°Ρ€ΠΎΠΉ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ).
  • ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ (Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ хранСния сСссий Π½Π° сСрвСрС).
  • Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ (ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² payload Ρ‚ΠΎΠΊΠ΅Π½Π°).

Passport: ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Passport β€” это популярная middleware-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Node.js, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π±ΠΎΠ»Π΅Π΅ 500 стратСгий Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ JWT, OAuth, Google, Facebook ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Passport Π»Π΅Π³ΠΊΠΎ интСгрируСтся Π² Express-прилоТСния ΠΈ позволяСт быстро Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ связкС с JWT Passport обСспСчиваСт Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ Π²Π°ΡˆΠΈΡ… REST API.

GraphQL API: соврСмСнныС возмоТности ΠΈ Π·Π°Ρ‰ΠΈΡ‚Π°

GraphQL β€” это язык запросов ΠΊ API, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Facebook, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΠΌΡƒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½Ρ‹. Благодаря гибкости ΠΈ возмоТности Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… источников Π·Π° ΠΎΠ΄ΠΈΠ½ запрос, ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ GraphQL растСт с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π΄Π½Π΅ΠΌ.

АутСнтификация Π² GraphQL

Π₯отя Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° GraphQL отличаСтся ΠΎΡ‚ REST, вопросы бСзопасности ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ здСсь Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ схоТими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. JWT остаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивных способов Π·Π°Ρ‰ΠΈΡ‚Ρ‹ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. Π’ΠΎΠΊΠ΅Π½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ… ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ поля Π² запросах, Π° сСрвСр провСряСт ΠΈΡ… Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ запроса. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных сСрвСров GraphQL (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Apollo Server, GraphQL Yoga) ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JWT ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Passport.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

  • Π’Ρ‹Π±ΠΎΡ€ схСмы Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ: Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ использованиС JWT Π² связкС с Passport.
  • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²: РСкомСндуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ JWT-Ρ‚ΠΎΠΊΠ΅Π½ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π² httpOnly cookies ΠΈΠ»ΠΈ Π² localStorage (ΠΏΡ€ΠΈ ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… трСбованиях ΠΊ бСзопасности).
  • ОбновлСниС Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ²: Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ refresh token для продлСния сСссии ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° пароля.
  • Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ XSS ΠΈ CSRF: Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ бСзопасныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ‚ΠΎΠΊΠ΅Π½ΠΎΠ², внСдряйтС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ β€” CORS, Content Security Policy ΠΈ Π΄Ρ€.
  • ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Π°ΡƒΠ΄ΠΈΡ‚: Π’Π΅Π΄ΠΈΡ‚Π΅ Π»ΠΎΠ³ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ активности ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ инструмСнты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° API.

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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Ρ… REST ΠΈ GraphQL API β€” критичСски ваТная Π·Π°Π΄Π°Ρ‡Π° для любого соврСмСнного Π²Π΅Π±-прилоТСния. ИспользованиС JWT ΠΈ Passport позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΡƒΡŽ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ систСму Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, которая ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… стартапов, Ρ‚Π°ΠΊ ΠΈ для ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Если Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ Π°ΡƒΠ΄ΠΈΡ‚Π° API с Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ β€” ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ!