ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° PHP ΠΈ JavaScript

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ JSON

Бинтаксис JSON Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

Π€ΠΎΡ€ΠΌΠ°Ρ‚ json ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ записываСтся Π² 2-Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ…:

1. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ 10, 15 ΠΈ «test» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

НСмного Π±ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

PHP Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ

Π’ языкС php начиная с вСрсии 5.2. Π΅ΡΡ‚ΡŒ всСго 4 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π’ основном ΠΏΠΎ-большСй части, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ всСго Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: json_encode ΠΈ json_decode. НС Π±ΡƒΠ΄Ρƒ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² подробности ΠΈΡ… синтаксиса, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° php.net. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ : ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° русском языкС, функция json_encode ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ русскиС символы Π² юникод, Ρ‚.Π΅. замСняСт ΠΈΡ… Π½Π° \uXXXX ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, json-строка становится Π½Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΉ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° (Π½ΠΎ понятной для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°). Если Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ прСобразования Π² юникод Π½Π΅ происходило (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΊΠΎΠ΄Π°), ΠΌΠΎΠΆΠ½ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ JSON_UNESCAPED_UNICODE.

Π’Π°ΠΊ ΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ добавлялись слэши для экранирования ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ строки с числами ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ числа, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JSON_UNESCAPED_SLASHES ΠΈ JSON_NUMERIC_CHECK. Π’ ΠΈΡ‚ΠΎΠ³Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ json-строка Π±Ρ‹Π»Π° Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΉ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, сдСлаСм, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π‘Π΅Π· использования этих ΠΎΠΏΡ†ΠΈΠΉ строка Π±Ρ‹Π»Π° Π±Ρ‹ Ρ‚Π°ΠΊΠΎΠΉ:

Π° с использованиСм ΠΎΠΏΡ†ΠΈΠΉ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΡƒΡŽ строку:

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚: Ссли Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ json-строки функция json_decode Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π»Π° ΠΈΠΌΠ΅Π½Π½ΠΎ массив, просто Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€Π°Π²Π½Ρ‹ΠΉ true.

На этом рассмотрСниС php-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°Π²Π΅Ρ€ΡˆΡƒ.

JavaScript Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ для языка JavaScript ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ стал просто ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ тСкстовым Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… языках. Π’ΠΈΠ΄ΠΈΠΌΠΎ, поэтому синтаксис JSON ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° синтаксис записи ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ массивов.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ JavaScript, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для прСобразования Π² JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ:

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСкодирования json-строки Π² массив с Ρ†ΠΈΡ„Ρ€Π°ΠΌΠΈ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прСобразования (сСриализации) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² JSON-строку:

ΠŸΡ€ΠΈ сСриализации (ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² JSON-строку, вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ toJSON этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ссли ΠΎΠ½ сущСствуСт. Если ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅Ρ‚, Ρ‚ΠΎΠ³Π΄Π° ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ всС свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прСобразования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ toJSON:

ОбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ JSON.parse ΠΈ JSON.stringify ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΏ.ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для уточнСния ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ. НС Π±ΡƒΠ΄Ρƒ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΡΡ‚Π°Ρ‚ΡŒΠΈ. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, ΠΎ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, здСсь: https://learn.javascript.ru/json.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ практичСского примСнСния JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°

БобствСнно, Π»ΠΈΡ‡Π½ΠΎ я, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ JSON Π² 2-Ρ… основных ситуациях:

1. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΈ сСрвСром с использованиСм Ajax-запросов.

НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ какая-Ρ‚ΠΎ страница, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. Допустим, Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ с сСрвСра «ΠΏΠΎΠ΄Π³Ρ€ΡƒΠ·ΠΈΠ»Π°ΡΡŒ» информация со списком сотрудников ΠΈ ΠΈΡ… Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’ JavaScript с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ jQuery Π΄Π΅Π»Π°Π΅ΠΌ простой ajax-запрос ΠΊ сСрвСру ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€:

На сСрвСрС скрипт get-info.php ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ дСлаСтся ajax-запрос, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΈΠΌ:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ JSON-строка, которая Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π° с сСрвСра Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π±Ρ‹Π»Π° Ρ‚Π°ΠΊΠΎΠΉ:

Π― ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ стал ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ строку Π² Π²ΠΈΠ΄Π΅ «Π΄Π΅Ρ€Π΅Π²Π°», Ρ‚.ΠΊ. ΠΎΠ½Π° пСрСдаСтся ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅. И ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, запись Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΠΉ, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ сСрвСра ΠΊ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ практичСски ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ.

2. Π—Π°ΠΏΠΈΡΡŒ слоТных структур Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

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

ВмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ€Π°Π΄ΠΈ 2-Ρ… настроСк, ΠΌΠΎΠΆΠ½ΠΎ просто Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ со списком ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ тСкстовый столбСц, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ настроСк ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ΠΎΠ³Π΄Π° запрос обновлСния настроСк, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ:

Π’ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π²Ρ‹Π±Ρ€Π°Π» ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»ΡŒ.

Π’ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΈ всё содСрТимоС ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π’ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Π½Π΅ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ эта JSON-строка Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ практичСски Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

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

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ простой REST API Π² PHP.

1. ΠžΠ±Π·ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

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

REST API позволяСт Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ нСсколькими Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прилоТСниями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ REST.

1.2 Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ REST API?

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… прилоТСниях REST API Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это самый Π»Π΅Π³ΠΊΠΈΠΉ способ создания, чтСния, обновлСния ΠΈΠ»ΠΈ удалСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прилоТСниями Ρ‡Π΅Ρ€Π΅Π· Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» HTTP. Π­Ρ‚Π° информация прСдставляСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² ΠΎΠ΄Π½ΠΎ ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅, особСнно Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ JavaScript для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π²Π΅Π±-страницС.

1.3 Π“Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ REST API?

REST API ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±Ρ‹ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Ρƒ. Если Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Ρ‹, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ прилоТСния, это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ REST API.

2. Ѐайловая структура

3. Настройка Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

3.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ

3.2 Π”Π°ΠΌΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ

3.3 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

3.4 Π”Π°ΠΌΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

3.5 ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для получСния ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PDO.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ api ΠΈ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Ρ‘. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ config ΠΈ Π² Π½Π΅ΠΉ создайтС Ρ„Π°ΠΉΠ» database.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

4. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

4.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Product

Код Π½ΠΈΠΆΠ΅ содСрТит класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Product ΠΈ нСсколько свойств. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ конструктора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ соСдинСниС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

4.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° для чтСния Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

Код Π½ΠΈΠΆΠ΅ содСрТит Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ содСрТимого ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ.

4.3 ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ // ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ здСсь Π² Ρ„Π°ΠΉΠ»Π΅ read.php ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

4.4 Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ // Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ здСсь Π² Ρ„Π°ΠΉΠ»Π΅ read.php ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

4.5 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° read()

4.6 Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ // ‘Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹’ Π±ΡƒΠ΄Π΅Ρ‚ здСсь Π² Ρ„Π°ΠΉΠ»Π΅ read.php ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

5. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

5.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° create.php

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ product ΠΈ создайтС Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» create.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым.

5.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° create()

6. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ²Π°Ρ€Π°

6.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° read_one.php

6.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° readOne()

7. ОбновлСниС Ρ‚ΠΎΠ²Π°Ρ€Π°

7.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° update.php

7.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° update()

8. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Π°

8.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° delete.php

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ product ΠΈ создайтС Ρ„Π°ΠΉΠ» delete.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым.

8.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° delete()

9. Поиск Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

9.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° search.php

Π’ ΠΏΠ°ΠΏΠΊΠ΅ product создайтС Ρ„Π°ΠΉΠ» search.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

9.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° search()

10. ΠŸΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ²

10.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° read_paging.php

Π’ ΠΏΠ°ΠΏΠΊΠ΅ product создайтС Ρ„Π°ΠΉΠ» read_paging.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

10.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° core.php

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит Π½Π°ΡˆΡƒ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ URL ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ config ΠΈ создайтС Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» core.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым.

10.3 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° readPaging()

10.4 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° count()

Π’Π°ΠΊ ΠΆΠ΅ Π² классС Product (Ρ„Π°ΠΉΠ» product.php) Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ count() для создания массива ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ.

10.5 ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ массива ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ

11. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ

11.1 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Category

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ objects ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» category.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

11.2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° read.php

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ category Π² ΠΊΠΎΡ€Π½Π΅, ΠΈ Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» read.php со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

11.3 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° read()

Если Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ данная ΡΡ‚Π°Ρ‚ΡŒΡ, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ созданиС рСгистрации ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² php с использованиСм JWT.

НадСюсь, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ данная информация. Если Π²Π°ΠΌ интСрСсна Ρ‚Π΅ΠΌΠ° web-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²Ρ‹Ρ… статСй Π² Telegram.

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

ВзаимодСйствиС сСрвисов ΠΈ REST API

Π’ соврСмСнной Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ принято Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ backend-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ выполняСтся Π½Π° сСрвСрС – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° PHP) ΠΎΡ‚ frontend-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ выполняСтся Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ – JavaScript). Frontend выполняСт запросы Π½Π° backend ΠΈ отрисовываСт Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ backend Π΅ΠΌΡƒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚. Но ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ происходит этот ΠΎΠ±ΠΌΠ΅Π½? Π§Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ? Как выглядят Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ бэкСндом ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΎΠΌ? Об этом ΠΈ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅.

Π’ ΡƒΡ€ΠΎΠΊΠ΅ ΠΏΡ€ΠΎ composer ΠΌΡ‹ с Π²Π°ΠΌΠΈ ΡƒΠΆΠ΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ JSON. И я Π²Π°ΠΌ Π² Ρ‚ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ совСтовал ΠΏΠΎΠ³ΡƒΠ³Π»ΠΈΡ‚ΡŒ ΠΎΠ± этом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π•Ρ‰Π΅ Π½Π΅ сдСлали этого? Π’ΠΎΠ³Π΄Π° сСйчас – самоС врСмя.

ПишСм API

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ с Π²Π°ΠΌΠΈ напишСм ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ – это ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.

И рядом с Π½ΠΈΠΌ Ρ„Π°ΠΉΠ» index.php

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, пСрСйдя ΠΏΠΎ адрСсу: http://myproject.loc/api/

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вывСсти Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ json.

Π’ PHP Π΅ΡΡ‚ΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с json. Нас Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π΄Π²Π΅: json_encode() ΠΈ json_decode(). ΠŸΠ΅Ρ€Π²Π°Ρ позволяСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² json-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

Обновим страничку ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° сСрвСр ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π² Ρ„ΠΎΠΌΠ°Ρ‚Π΅ JSON, стоит ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² свой Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ JSON formatter.

И снова ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ страничку. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ сСрвСра стало Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ – это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ добавляСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ.

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм наш API Π² ООП-стилС. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ MVC, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ View вмСсто Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° HTML-шаблонов Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ JSON. Π”Π°Π²Π°ΠΉΡ‚Π΅ сдСлаСм Ρƒ View ΠΌΠ΅Ρ‚ΠΎΠ΄ для Π²Ρ‹Π²ΠΎΠ΄Π° JSON-Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со ΡΡ‚Π°Ρ‚ΡŒΡΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· API. Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ сначала ΠΏΠ°ΠΏΠΊΡƒ Api Π²Π½ΡƒΡ‚Ρ€ΠΈ Controllers, Π° Π·Π°Ρ‚Π΅ΠΌ добавляСм наш Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создаём ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³ для API:

И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, пишСм Ρ„Ρ€ΠΎΠ½Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ для API.

Всё, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΉΡ‚ΠΈ Π½Π° наш API ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ выводится ΡΡ‚Π°Ρ‚ΡŒΡ: http://myproject.loc/api/articles/1

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

ДобавляСм Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса:

ΠΈ добавляСм ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π²ΠΈΠ΄Π΅ массива:

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

Postman

Но Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API? Для этого Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π² API запрос Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Π½Π° JS. А Π² цСлях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ – ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ запросы. Одним ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… инструмСнтов являСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Postman. Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅, установитС ΠΈ запуститС.

Π’ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄:

Π—Π΄Π΅ΡΡŒ php://input – это Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…. ИмСнно ΠΈΠ· Π½Π΅Π³ΠΎ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ JSON ΠΈΠ· запроса. file_get_contents – Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ мСста, Π² нашСм случаС ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. А json_decode Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ json Π² структуру массива. ПослС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ массив с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ var_dump().

ДобавляСм для Π½Π΅Π³ΠΎ Ρ€ΠΎΡƒΡ‚:

И заполняСм Postman Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠ°ΠΊ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅:
ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

ПослС этого ΠΆΠΌΡ‘ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ Send. ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌ Π½ΠΈΠΆΠ΅ Π΄ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Preview.
ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

Π’ΡƒΡ‚ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π²Ρ‹Π²ΠΎΠ΄ var_dump Ρ‚ΠΎΠΉ структуры, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ Π² POST-запросС Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.
Π”Π°Π²Π°ΠΉΡ‚Π΅ вынСсСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» чтСния Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² абстрактный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€:

И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎ всСх ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… ΠΌΡ‹ смоТСм ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сдСлаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΡ…Ρ€ΡΠ½ΡΡ‚ΡŒ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΡƒΡŽ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.

РазумССтся, здСсь Ρ‚Π°ΠΊΠΆΠ΅ стоит Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, являСтся Π»ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π² Π°Π²Ρ‚ΠΎΡ€Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Но это ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ сам ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с JSON-API.

Π‘Π½ΠΎΠ²Π° возвращаСмся Π² Postman ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΆΠΌΠ΅ΠΌ Send.

ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°Π΅ΠΌ Π²Π½ΠΈΠ· Π΄ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°, Π½ΠΎ Π½Π° этот Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Pretty.
ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php

Как Π²ΠΈΠ΄ΠΈΠΌ, ΡΡ‚Π°Ρ‚ΡŒΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ добавилась ΠΈ выводится Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON ΠΏΠΎ адрСсу http://myproject.loc/api/articles/id_ΡΡ‚Π°Ρ‚ΡŒΠΈ.

REST API

Π’ΠΎ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сСйчас с Π²Π°ΠΌΠΈ написали – это ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ API. Π•ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС систСмы для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ API. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€ΠΎΡƒΡ‚ΠΈΠ½Π³ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ запроса. НапримСр, POST-запрос ΠΏΠΎ адрСсу http://myproject.loc/api/articles/1 Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π΅ экшн update, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ с А GET-запрос ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ адрСсу Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ экшн view, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Π’ΠΎ Π΅ΡΡ‚ΡŒ для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ адрСса ΠΌΡ‹ отправляСм Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ запросов – POST, GET, PUT, DELETE. И Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° запроса Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Ρ€Π°Π·Π½Ρ‹Π΅ ΡΠΊΡˆΠ΅Π½Ρ‹. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ курса ΠΌΡ‹ этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ – ограничимся простым ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ просто ΠΏΠΎΠ½ΠΈΠΌΠ°Π»ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ.

ΠŸΡ€ΠΈ этом структура запроса ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ – ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Ρ‘ – ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ отправляСм ΡΡ‚Π°Ρ‚ΡŒΡŽ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON, с Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅ полями.

Π’ΠΎΡ‚ этот ΡΡ‚ΠΈΠ»ΡŒ взаимодСйствия с API Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ структуру Π΄Π°Π½Π½Ρ‹Ρ… для запроса ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ запросов для Ρ€Π°Π·Π½Ρ‹Ρ… дСйствий – называСтся REST API. Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ это, ΠΎΠ± этом ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π½Π° собСсСдовании: Β«Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ REST APIΒ». И Π²Ρ‹ скаТСтС, Ρ‡Ρ‚ΠΎ это ΠΊΠΎΠ³Π΄Π°:

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

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΎΠΌ ΠΈ бэкСндом, Π½ΠΎ Π΅Ρ‰Π΅ ΠΈ для взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ сСрвисами Π½Π° бэкСндС. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° бэкСндС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΏΠΎ API. Один сСрвис отправляСт Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ сСрвис сообщСниС Π² JSON-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π’ΠΎΡ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ JSON Π² Π΄Π°Π½Π½Ρ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹.

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

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ построСния REST JSON API

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api php. Π€ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ json api phpΠ­Ρ‚Π° памятка писалась для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π½ΡƒΠΆΠ΄ (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π³Π»Π°Π·Π° ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ Π² Π²Π΅Π±Π΅ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ). Но, Ρ‚.ΠΊ. я насмотрСлся вСлосипСдов ΠΎΡ‚ довольно ΡƒΠ²Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ…, казалось Π±Ρ‹, ΠΊΠΎΠ½Ρ‚ΠΎΡ€, β€” Π²Ρ‹ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽ Π½Π° Ρ…Π°Π±Ρ€. МнС каТСтся, ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ.

Π—Π°Ρ‡Π΅ΠΌ

НадСюсь, Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΡƒΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Π·Π°Ρ‡Π΅ΠΌ Π΅ΠΌΡƒ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠΆΠ΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ REST api, Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ монстр Ρ‚ΠΈΠΏΠ° SOAP. Вопрос Π² Ρ‚ΠΎΠΌ, Π·Π°Ρ‡Π΅ΠΌ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ стандарты ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, Ссли Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° запросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

Π›ΡŽΠ±ΠΎΠΉ http-запрос начинаСтся со строки

Π³Π΄Π΅ METHOD β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ доступа (GET, PUT ΠΈ Ρ‚.Π΄.), Π° URI β€” адрСс Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ рСсурса.

Π’ Π½Π°Ρ‡Π°Π»Π΅ запроса ΠΈΠ΄ΡƒΡ‚ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ β€” просто тСкстовыС строки Π²ΠΈΠ΄Π° key: value
Π—Π°Ρ‚Π΅ΠΌ пСрСдаётся пустая строка, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ ΠΊΠΎΠ½Π΅Ρ† сСкции Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², ΠΈ Π·Π°Ρ‚Π΅ΠΌ β€” Ρ‚Π΅Π»ΠΎ запроса, Ссли ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ.

Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ сначала пСрСдаётся строка с вСрсиСй http, ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ строковым статусом ΠΎΡ‚Π²Π΅Ρ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ HTTP/1.1 200 OK ), Π΄Π°Π»Π΅Π΅ тСкстовыС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌ пустая строка, ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚Π΅Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°.

Π’ΡƒΡ‚ Π²Ρ€ΠΎΠ΄Π΅ всё просто.

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° для всСх ΠΈ запросов, ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² β€” UTF-8 ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ UTF-8, Ρ‚.ΠΊ. Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊΡ…ΠΌ, «Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹» ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡ΠΊΡƒ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° charset.

ИспользованиС ΠΊΠΎΠ΄ΠΎΠ² символов ΠΈ html-сущностСй Π½Π΅ допускаСтся, Ρ‚.Π΅. Ρ€Π΅ΠΆΠΈΠΌ JSON_UNESCAPED_UNICODE обязатСлСн. НС всС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π·Π½Π°ΡŽΡ‚ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ html сущностСй (Ρ‚ΠΈΠΏΠ° ΠΊΠ°ΠΊΠΈΡ…-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΓΉ ), Π΄Π° ΠΈ ΠΏΡ€ΠΈ Ρ‡Ρ‘ΠΌ Ρ‚ΡƒΡ‚ html. НС всС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹/хотят Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ \uXXXX; ΠΈ &#XX;. Плюс Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ «Π²Π΅ΡΡ‘Π»Ρ‹Π΅» ситуации с ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ экранированиСм ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ΠΌ слэшСй ΠΈ ампСрсандов.

ВсС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΡ€ΠΎΠΌΠ΅ URI ΠΈ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всякий Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΉ javascript ΠΊΠΎΠ΄ являСтся Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ JSON.
Π’ частности, для строк ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² json-Π΄Π°Π½Π½Ρ‹Ρ…, хотя ΠΈ допустимы Π² «ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ» javascript, ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ нСпрСдсказуСмыС ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π±Π°Π³ΠΈ.

Π’ запросах ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ указываСтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ

Π’Ρ‹Π·ΠΎΠ²Ρ‹ ΠΊ API ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ html страницы ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ URI) ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ application/json Π² Accept.

Π’ ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… 2Ρ…Ρ… с нСпустым Ρ‚Π΅Π»ΠΎΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΎΡ‚Π²Π΅Ρ‚Π°

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ‚Π΅Π»Π° запроса Ρ‚Π°ΠΊΠΆΠ΅ обязатСлСн Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ запроса

Π»ΠΈΠ±ΠΎ, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²,

ΠΈ Π΄Π°Π»Π΅Π΅, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части

послС Ρ‡Π΅Π³ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ CSRF (Π° Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹ Π²Π°ΠΌ Π΅Ρ‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ), Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ CSRF-Ρ‚ΠΎΠΊΠ΅Π½ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ (Ρ‚ΠΈΠΏΠ° X-CSRF-Token) для всСх запросов, Π° Π½Π΅ Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запрос. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ CSRF Ρ‚ΠΎΠΊΠ΅Π½ Π² ΠΊΡƒΠΊΠ°Ρ… ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, Ρ‡Ρ‚ΠΎ ΠΊΡƒΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΡ€Π°ΡΡ‚ΡŒ, Π² Ρ‡Ρ‘ΠΌ собствСнно ΠΈ состоит ΡΡƒΡ‚ΡŒ CSRF Π°Ρ‚Π°ΠΊΠΈ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° URI

ΠΠ°Π³ΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ всякоС, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС URI ΠΈΠΌΠ΅Π»ΠΈ Π²ΠΈΠ΄

Π½Ρƒ, ΠΈΠ»ΠΈ Ссли Ρƒ вас api Π»Π΅ΠΆΠΈΡ‚ Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΠ°ΠΏΠΊΠ΅,

Для Ρ€Π°Π·Π±ΠΎΡ€Π° части URI Π΄ΠΎ Π·Π½Π°ΠΊΠ° вопроса ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСгулярку

Π’Π΅Π΄ΡƒΡ‰ΠΈΠΉ слэш обязатСлСн, Ρ‚.ΠΊ. нСизвСстно, с ΠΊΠ°ΠΊΠΎΠ³ΠΎ URL Π±ΡƒΠ΄Π΅Ρ‚ осущСствлён запрос.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ HTTP

GET /:entity/:id β€” getById

Π’ случаС успСха сСрвСр Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 200 OK с полями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON Π² Ρ‚Π΅Π»Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π° (Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ оборачивания Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚)

Π’ случаС, Ссли ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ‚Π°ΠΊΠΈΠΌΠΈ id Π½Π΅ сущСствуСт, сСрвСр Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 404 Not Found

Π’ ΠΎΡ‚Π²Π΅Ρ‚Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚.ΠΊ. Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΊΠ΅ΡˆΠΈΡ€ΡƒΡŽΡ‚ GET ΠΈ HEAD запросы. ΠŸΡ€ΠΈ остутствии ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ управлСния кэшСм Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ:

GET /:entity[?param1=. &param2=. ] β€” списочный get

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ случай: Π² случаС успСха сСрвСр Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 200 OK с массивом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON Π² Ρ‚Π΅Π»Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π° (Ρ‚.Π΅. ΠΎΡ‚Π²Π΅Ρ‚ начинаСтся с [ ΠΈ заканчиваСтся ] ).

Если массив получился пустой, всё Ρ€Π°Π²Π½ΠΎ вовзращаСтся 200 OK с пустым масивом [] Π² Ρ‚Π΅Π»Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π°.

Π‘ΠΎΠ»Π΅Π΅ слоТный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: возвращаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ β€” искомый массив. Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… полях β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, счётчики ΠΈ ΠΏΡ€. Волько Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ это консистСнтным ΠΏΠΎ всСм api.

HEAD /:entity[/:id] β€” запрос Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ GET с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ URI, Π½ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ.

РСализация ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ HEAD запросов Π²Π΅Π±-сСрвСром ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°.

Активно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ Π² качСствС автоматичСских pre-flight запросов ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ опасных, ΠΏΠΎ ΠΈΡ… мнСнию, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. НапримСр, Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Chrome Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ кидаСтся head-запросами для получСния ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊ CORS ΠΏΡ€ΠΈ кросс-Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… опСрациях (Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€). ΠŸΡ€ΠΈ этом ошибка ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ head-запроса ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ основной запрос Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ.

ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ сущСствования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±Π΅Π· Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°-Ρ„Π°ΠΉΠ»ΠΎΠ²).

POST /:entity β€” создаёт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° :entity

Π’ Ρ‚Π΅Π»Π΅ запроса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пСрСчислСны поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ заворачивания, Ρ‚.Π΅.

Π’ случаС успСха сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ 201 Created с пустым Ρ‚Π΅Π»ΠΎΠΌ, Π½ΠΎ с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ

ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π½Π° мСсторасполоТСниС созданного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ‚Π΅Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π° Ρ‡Π°Ρ‰Π΅ всСго Π½Π΅ трСбуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π° id созданного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Location.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ POST ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ (RPC), Π² этом случаС ΠΎΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ статус 200 OK ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Ρ‚Π΅Π»Π΅. Π’ΠΎΠΎΠ±Ρ‰Π΅ ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ REST ΠΈ RPC Π² ΠΎΠ΄Π½ΠΎΠΌ api β€” идСя ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ, Π½ΠΎ всякоС Π±Ρ‹Π²Π°Π΅Ρ‚.

ЕдинствСнный Π½Π΅ΠΈΠ΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹ΠΉ Π½Π΅ΠΊΠ΅ΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚.Π΅. ΠΏΠΎΠ²Ρ‚ΠΎΡ€ Π΄Π²ΡƒΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… POST запросов создаст Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

PUT /:entity/:id β€” измСняСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ

Π’ запросС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ всС поля измСняСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.

Π’ случаС успСха Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ 204 No Data с пустым Ρ‚Π΅Π»ΠΎΠΌ, Ρ‚.ΠΊ. Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π΅ΡΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹ΠΉ запрос, Ρ‚.Π΅. ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ PUT с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Ρ‚Π΅Π»ΠΎΠΌ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ измСнСниям Π² Π‘Π”.

PATCH /:entity/:id β€” измСняСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Π’ запросС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ пСрСчислСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ поля, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ измСнСнию.

Π’ случаС успСха Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 200 OK с Ρ‚Π΅Π»ΠΎΠΌ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ запросу getById, со всСми полями ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚.ΠΊ. Π΄Π²Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… PATCH ΠΎΡ‚ Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΠ΅ состояниС.

DELETE /:entity/:id β€” удаляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ссли ΠΎΠ½ сущСствуСт.

Π’ случаС успСха Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 204 No Data с пустым Ρ‚Π΅Π»ΠΎΠΌ, Ρ‚.ΠΊ. Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π½Π΅Ρ‡Π΅Π³ΠΎ.

Π˜Π΄Π΅ΠΌΠΏΠΎΡ‚Π΅Π½Ρ‚Π½Ρ‹ΠΉ запрос, Ρ‚.Π΅. ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ DELETE с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ адрСсом Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС 404.

OPTIONS /:entity[/:id]

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ список ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², доступных ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ URI.

Π‘Π΅Ρ€Π²Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ 200 OK с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ

ΠΠ΅ΠΊΠ΅ΡˆΠΈΡƒΡ€Π΅ΠΌΡ‹ΠΉ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

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

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ошибки ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ с сСрвСра Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ со статусами 4Ρ…Ρ… (ошибка ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°) ΠΈΠ»ΠΈ 5Ρ…Ρ… (ошибка сСрвСра). ΠŸΡ€ΠΈ этом описаниС ошибки, Ссли ΠΎΠ½ΠΎ Π΅ΡΡ‚ΡŒ, приводится Π² Ρ‚Π΅Π»Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ text/plain (Π±Π΅Π· всякого JSON). БоотвСтствСнно, пСрСдаётся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΡ‚Π²Π΅Ρ‚Π°

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ html для оформлСния сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² api β€” Ρ‚Π°ΠΊ сСбС идСя, Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Ρ‚.Π΄. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ способСн сам красиво ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ сообщСниС ΠΎΠ± ошибкС для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² ошибок Π½Π΅ слСдуСт слишком ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ ΠΈ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ каТСтся подходящим. Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ² Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ. НапримСр, ΠΊΠΎΠ΄ 401 запускаСт HTTP-Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ странно ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π° react ΠΈΠ»ΠΈ electron.

UPD ΠΏΠΎ ΠΌΠΎΡ‚ΠΈΠ²Π°ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Ρƒ вас Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅: Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Π± ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния, Π½ΠΎ ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΡˆΡ‚ΡƒΠΊΠΈ, ΠΊΠ°ΠΊ запускалка ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… тСстов (CI), балансировщик Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ систСма ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Ρƒ Π°Π΄ΠΌΠΈΠ½ΠΎΠ². ИспользованиС ΠΈΠ»ΠΈ нСиспользованиС Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ статуса ошибки опрСдСляСтся Ρ‚Π΅ΠΌ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΎΠ½ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ (Ρ‚.Π΅. этот ΠΊΠ»ΠΈΠ΅Π½Ρ‚ смоТСт ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΠΎ этому ΠΊΠΎΠ΄Ρƒ) ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΈΠ· ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ·-Π·Π° нСиспользования Π²Π°ΠΌΠΈ этого ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ use-case, ΠΊΠΎΠ³Π΄Π° рСакция ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ 404 ΠΈΠ»ΠΈ 410, довольно слоТно. ΠŸΡ€ΠΈ этом ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ 404 ΠΎΡ‚ 200 ΠΈΠ»ΠΈ 500 β€” Π²Π°Π³ΠΎΠ½ ΠΈ Ρ‚Π΅Π»Π΅Π³Π°.

400 Bad Request

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ошибки, Ссли сСрвСру нСпонятСн запрос ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

403 Forbidden

ВозвращаСтся, Ссли опСрация Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π° для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Если Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ ΡƒΡ‡Ρ‘Ρ‚ΠΊΠ° с Π±ΠΎΠ»Π΅Π΅ высокими ΠΏΡ€Π°Π²Π°ΠΌΠΈ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠ³ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ 419

404 Not Found

ВозвращаСтся, Ссли Π² запросС Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½ нСизвСстный entity ΠΈΠ»ΠΈ id Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

БписочныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ get Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ этот ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ Π²Π΅Ρ€Π½ΠΎΠΌ entity (см. Π²Ρ‹ΡˆΠ΅).

Если запрос Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ, слСдуСт Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ 418.

415 Unsupported Media Type

ВозвращаСтся ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сСрвСр, Ссли фактичСский Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π½Π΅ поддСрТиваСтся. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ, Ссли Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ JSON запроса, ΠΈΠ»ΠΈ сам запрос ΠΏΡ€ΠΈΡˆΡ‘Π» Π½Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ JSON.

418 I’m a Teapot

ВозвращаСтся для нСизвСстных сСрвСру запросов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π΄Π°ΠΆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅, Ρ‚ΠΈΠΏΠ° ошибки ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ URI, Π»ΠΈΠ±ΠΎ Ρ‡Ρ‚ΠΎ вСрсии ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ сСрвСра Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚.

419 Authentication Timeout

ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅Ρ‚ΡΡ, Ссли ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΡƒΡŽ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡ‚ΡƒΡ…Π»ΠΈ ΠΊΡƒΠΊΠΈ ΠΈΠ»ΠΈ CSRF Ρ‚ΠΎΠΊΠ΅Π½Ρ‹). ΠŸΡ€ΠΈ этом Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСсохранённыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны, Ссли просто Π²Ρ‹ΠΊΠΈΠ½ΡƒΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π½Π° страницу Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

422 Unprocessable Entity

Запрос ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½, Π½ΠΎ содСрТаниС запроса Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡΠ΅Ρ€Π²Π΅Ρ€Π½ΡƒΡŽ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ.

НапримСр, Π² Ρ‚Π΅Π»Π΅ запроса Π±Ρ‹Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ нСизвСстныС сСрвСру поля, ΠΈΠ»ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΈΠ»ΠΈ с содСрТимым ΠΏΠΎΠ»Π΅ΠΉ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ ошибкой Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ ΠΈΠ»ΠΈ нСсовпадСниСм вСрсий.

500 Internal Server Error

ВозвращаСтся, Ссли Π½Π° сСрвСрС Π²Ρ‹Π»Π΅Ρ‚Π΅Π»ΠΎ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° другая нСобработанная ошибка Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния.

Всё, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π² этом случаС β€” это ΡƒΠ²Π΅Π΄ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ console.error(err) для Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰Π΅ΠΉ (Π°Π΄ΠΌΠΈΠ½ΠΎΠ², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ тСстировщиков).

501 Not Implemented

ВозвращаСтся, Ссли Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ (Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½) ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ запроса.

Ну Π²ΠΎΡ‚, Π² ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ, ΠΈ всё. Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!

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

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *