πŸ›  Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ REST API: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π›ΠΎΠ½Π³Ρ€ΠΈΠ΄ ΠΎ концСпциях, особСнностях стиля Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… REST API.

Данная ΡΡ‚Π°Ρ‚ΡŒΡ являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ. Бсылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ.

1. Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ API ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹?

API β€” это Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ². API Π½ΡƒΠΆΠ½Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя частями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, поставщиком ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (сСрвСром) ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

API ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ содСрТимоС, доступноС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΌΡƒ Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚ производитСля, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ API для взаимодСйствия, получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

API выступаСт Π² Ρ€ΠΎΠ»ΠΈ посрСдника ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ) ΠΈ рСсурсами (сСрвСрами).

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ запросы ΠΊ API ΠΈΠ»ΠΈ ΠΏΠΎΡΠ΅Ρ‰Π°ΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½, ΠΎΠ½ΠΈ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ быстрого ΠΎΡ‚Π²Π΅Ρ‚Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Magento TTFB (Time To First Byte) ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стратСгии ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ CMS.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ API:

  • оптимизация ΠΎΠ±ΠΌΠ΅Π½Π° рСсурсами ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ;
  • ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ доступа с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ опрСдСлСния ΠΏΡ€Π°Π²;
  • Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ;
  • отсутствиС нСобходимости Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² спСцификС ПО;
  • согласованноС взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами, Π΄Π°ΠΆΠ΅ Ссли сСрвисы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

2. ΠžΠ±Π·ΠΎΡ€ REST API

REST API

RESTful относится ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, которая Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Representational State Transfer (ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ€Π΅ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ состояния). Π­Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° извСстна Π² контСкстС стандартизации использования систСм ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ (Π²Π΅Π±-сСрвисов).

Π­Ρ‚ΠΈ Π²Π΅Π±-сСрвисы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π±Π΅Π· статичСского состояния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ тСкстовыС прСдставлСния ΠΎΠ½Π»Π°ΠΉΠ½-рСсурсов доступными для чтСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠšΠ»ΠΈΠ΅Π½Ρ‚ выполняСт дСйствия Π½Π° основС HTTP, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΎΡ€ΠΊΠ°, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅.

REST создан Π² 2000 Π³ΠΎΠ΄Ρƒ с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΈ простоты Π·Π° счёт ввСдСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° API. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ†Π΅Π»ΠΈ использования API REST.

Π¦Π΅Π»ΠΈ REST API

2.1. ИспользованиС ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°

Для REST Π½Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ клиСнтской Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ REST ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ:

  1. Π’Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.
  2. iOS-прилоТСния.
  3. IoT-устройства.
  4. Windows Phone прилоТСния.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ трСбуСтся ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ клиСнтского стСка, допустимо ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ инфраструктуру для своСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.

2.2. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅

Π’Ρ‹Π·ΠΎΠ²Ρ‹ REST API подходят для ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ благодаря ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΡŽ состояния. Если Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Π΅Π· сохранСния состояния Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сдвигами Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.

2.3. ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ вычислСния

Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ API с сСрвисом Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ управлСния Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ URL-адрСса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ REST стал ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π² ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисах. АрхитСктура RESTful API станСт стандартом Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ благодаря ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌ вычислСниям ΠΈ микросСрвисам.

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста»

3. Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ REST API?

Π”Π°Π½Π½Ρ‹Π΅ (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ изобраТСния, Π²ΠΈΠ΄Π΅ΠΎ ΠΈ тСкст) Π²ΠΎΠΏΠ»ΠΎΡ‰Π°ΡŽΡ‚ рСсурсы Π² REST. ΠšΠ»ΠΈΠ΅Π½Ρ‚ посСщаСт URL-адрСс ΠΈ отправляСт сСрвСру запрос, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ REST API

4. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ REST API

Запрос (URL, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ) содСрТит Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°:

  1. ΠšΠΎΠ½Π΅Ρ‡Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ°, ΡΠ²Π»ΡΡŽΡ‰Π°ΡΡΡ URL-адрСсом со структурой root-endpoint/?.
  2. ΠœΠ΅Ρ‚ΠΎΠ΄ с Ρ‚ΠΈΠΏΠΎΠΌ (GET, POST, PUT, PATCH, DELETE).
  3. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, прСдоставлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ содСрТимом Ρ‚Π΅Π»Π° (допустимо ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -H ΠΈΠ»ΠΈ --header для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² HTTP) ΠΈ Ρ‚. Π΄.
  4. Π”Π°Π½Π½Ρ‹Π΅ (ΠΈΠ»ΠΈ Ρ‚Π΅Π»ΠΎ) – это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ отправляСтся Π½Π° сСрвСр с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -d ΠΈΠ»ΠΈ --data ΠΏΡ€ΠΈ запросах POST, PUT, PATCH ΠΈΠ»ΠΈ DELETE.

HTTP-запросы Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  1. POST-запрос для создания записСй.
  2. GET-запрос Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ рСсурса (Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ изобраТСния, Π½Π°Π±ΠΎΡ€Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсов) с сСрвСра.
  3. PUT ΠΈ PATCH-запросы для обновлСния записСй.
  4. DELETE-запрос Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ рСсурса с сСрвСра.

Π­Ρ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… дСйствия CRUD: созданиС, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅.

CRUD

Π‘Π΅Ρ€Π²Π΅Ρ€ отправляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

  1. HTML.
  2. JSON (распространённый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ благодаря нСзависимости ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… языков ΠΈ доступности для людСй ΠΈ машин).
  3. XLT.
  4. PHP.
  5. Python.
  6. ВСкст.

5. Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ REST API?

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ REST Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ API, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ SOAP Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ, гибкости, пСрСносимости ΠΈ нСзависимости.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° REST API Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ API

5.1. НС ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

РаздСльная Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ привязаны ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ частям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Благодаря Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½Ρ‹ΠΌ REST API, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ аспСкт, Π½Π΅ влияя Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

5.2. ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈ Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

REST API Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ запроса доставлСны. REST API Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΌΠΈΠ³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ сСрвСра Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° потрСбуСтся.

5.3. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ нСзависимо, программисты ΠΌΠΎΠ³ΡƒΡ‚ быстро Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚.

6. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ стиля Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RESTful

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ приходится ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΆΡ‘ΡΡ‚ΠΊΡƒΡŽ структуру Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… API, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ SOAP ΠΈΠ»ΠΈ XML-RPC. Но REST API β€” это Π΄Ρ€ΡƒΠ³ΠΎΠ΅. REST API ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ написаны практичСски Π½Π° любом языкС программирования.

Π¨Π΅ΡΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ REST ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

АрхитСктурныС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ REST API

6.1. Π£Π½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс)

Π­Ρ‚Π° концСпция Π΄ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ запросы API ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ рСсурсу, нСзависимо ΠΎΡ‚ происхоТдСния, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ языкС. Один ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ рСсурса (URI) ассоциируСтся с ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ интСрфСйса гласит, Ρ‡Ρ‚ΠΎ сообщСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ. БообщСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ понятны сСрвСру, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏ запроса, MIME-Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ‚. Π΄.).

6.2. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра

АрхитСктурный ΡΡ‚ΠΈΠ»ΡŒ REST ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ особый ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ сСрвСр ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСзависимо ΠΈ Π½Π΅ обязаны Π·Π½Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ ΠΎ Π΄Ρ€ΡƒΠ³Π΅.

НапримСр, Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ рСсурса (URI) ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ с сСрвСрной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом. Однако, сСрвСр Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° клиСнтскоС ПО. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ сСрвСр отправляСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ HTTP. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ, Ссли клиСнтский ΠΊΠΎΠ΄ измСнится, это Π½Π΅ повлияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ сСрвСра.

Π‘Π΅Ρ€Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π»ΠΎΠ΄ΠΊΠ΅: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сСрвСрной части Π½Π΅ повлияСт Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ ΠΈ сСрвСрныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ нСзависимыми Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° каТдая сторона Π·Π½Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ сообщСния Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΎΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ интСрфСйса Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚ раздСлСния, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ нСзависимо. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ REST ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ:

  1. Π˜ΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ REST.
  2. Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ дСйствия.
  3. ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹.

6.3. НСстационарная связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ сСрвСрами

БистСмы Π½Π° основС REST Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ состояния, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ состояниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° остаётся нСизвСстным для сСрвСра ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ сСрвСру ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ΅ сообщСниС, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ соблюдСниС этого ограничСния Π±Π΅Π· статичности, трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы, Π° Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π² сСти. Π˜Ρ… Ρ†Π΅Π»ΡŒ – ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ слуТбам.

Допустимо ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, затрагивая систСму частично, поэтому прСимущСства этого ограничСния Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ достиТСниС:

  • ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ;
  • скорости;
  • ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ RESTful-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для выполнСния. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ прилоТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ состояниС сСссии, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сСрвСрныС прилоТСния Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, связанныС с клиСнтским запросом.

6.4. ΠšΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

REST Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ рСсурсов Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ сСрвСра Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Π₯ΠΎΡ€ΠΎΡˆΠΎ управляСмоС ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ взаимодСйствия ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр.

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Ρ‘Ρ‚ сСрвСру большС возмоТностСй ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ благодаря мСньшСй Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° сСрвСр. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страниц ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ€Π°Π½Π΅Π΅ просмотрСнному ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Ρƒ Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ.

6.5. АрхитСктура ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ систСмы

АрхитСктура ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ систСмы

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ обсуТдаСмоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ β€” это многоуровнСвая структура RESTful. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΡƒ слоёв с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ функциями.

Π‘Π»ΠΎΠΈ REST API ΠΈΠΌΠ΅ΡŽΡ‚ свои обязанности ΠΈ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² иСрархичСском порядкС. НапримСр, ΠΎΠ΄ΠΈΠ½ слой ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сСрвСрС, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” Π·Π° Ρ€Π°Π·Π²Ρ‘Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ API Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ сСрвСрС, Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ β€” Π·Π° Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ запросов Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ сСрвСрС.

Π­Ρ‚ΠΈ слои Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ посрСдники ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ прямоС взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтскими ΠΈ сСрвСрными прилоТСниями. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Π·Π½Π°Π΅Ρ‚, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ сСрвСру ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ обращаСтся.

Когда ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ слой выполняСт Π·Π°Π΄Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ API, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ API Π½Π΅ влияСт Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ интСрфСйса.

6.6. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΡŽ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ статичСских прСдставлСний рСсурсов Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML ΠΈΠ»ΠΈ JSON β€” популярный сцСнарий использования REST API.

Однако этот Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π² Π²ΠΈΠ΄Π΅ Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ сцСнариСв (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JavaScript). НапримСр, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° для Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ API.

7. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании REST API

Π‘ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π° REST API ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ ограничСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ использовании этого Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ стиля:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с REST API

7.1. БоглашСниС ΠΏΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ REST

API-интСрфСйсы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ нСзависимо ΠΎΡ‚ конструкции URL. Но с ростом Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² становится Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π°Π·Π°Ρ….

7.2. Π’Π΅Ρ€ΡΠΈΠΎΠ½Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ свойство REST API

API Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ рСгулярного обновлСния ΠΈΠ»ΠΈ вСрсионирования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ. Однако старыС ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ работоспособными, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.

7.3. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Допустимо ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ рСсурсы доступны Ρ‚Π΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ сторонниС слуТбы ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ доступ ΠΊ адрСсам элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈ Ρ‡Ρ‚ΠΎ эти слуТбы Π΄Π΅Π»Π°ΡŽΡ‚ с этими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Но 20 ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² API. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ·-Π·Π° ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… трудностСй.

7.4. Уязвимости бСзопасности REST API

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

Или Ρ…Π°ΠΊΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ тысячи запросов API Π² сСкунду, вызывая DDoS-Π°Ρ‚Π°ΠΊΡƒ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ΠΏΡ€Π°Π²ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ дСйствия слуТбы API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ ΠΊΡ€Π°Ρ…Ρƒ сСрвСра.

7.5. Π§Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ сбор Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ запросы

Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ запрос с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ. Или ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ нСсколько запросов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

***

ПодвСдСниС ΠΈΡ‚ΠΎΠ³ΠΎΠ²

ΠΠ΅ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ API Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ упорядочат Π²Π΅Π±-ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π˜Ρ… Ρ†Π΅Π»ΡŒ β€” ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Π²Π΅Π±-прилоТСниям Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. НапримСр, ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ растущим ΠΎΠ½Π»Π°ΠΉΠ½-компаниям Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹Π΅, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ систСмы.

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

admin
30 июня 2018

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования Π² Python: для ΡΡ‚ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

МногиС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования встроСны Π² Python ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
25 сСнтября 2017

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ Π΅Π³ΠΎ 11 ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ программирования, ΠΌΡ‹ рассмотрим исходн...
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
27 ΠΌΠ°Ρ€Ρ‚Π° 2017

4 Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΊΠ½ΠΈΠ³ ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… проСктирования

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… проСктирования, рассчитанныС ΠΊΠ°ΠΊ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², Ρ‚Π°ΠΊ ...