Перейти к основному содержимому

Другая сторона API

PHP-скрипты бывают не только серверами — они и сами вызывают API: получают данные, общаются с сервисами, интегрируют сторонние системы. Встроенный клиент — это file_get_contents вместе с контекстом потока: один URL даёт обычный GET, а контекст добавляет методы, заголовки и тело. Три привычки:

1. укажите ignore_errors в контексте, чтобы ответы 4xx и 5xx всё равно отдавали вам своё тело,
2. проверьте код состояния — первую строку $http_response_header — прежде чем доверять телу,
3. декодируйте тело через json_decode и проверьте результат на null, прежде чем пользоваться данными.

(В PHP есть и расширение cURL для более сложной клиентской работы; здесь же всё построено только на встроенных потоках.) Примеры ниже обращаются к локальному тестовому серверу, поэтому вывод стабилен — клиентский код в точности такой же, какой вы направили бы на реальный URL.


GET и декодирование

Повседневная задача: выполнить GET по URL, проверить код состояния, декодировать JSON-тело в массивы с помощью json_decode($body, true) — а дальше это обычные данные PHP.

Получаем список в массивы

Тело ответа декодируется в список пользователей, а дальше это обычные данные PHP — их обходят в цикле и печатают поле за полем.

Prompt
Напишите PHP-скрипт, который выполняет GET-запрос и получает с сервера JSON-массив пользователей (в демонстрации — локальный встроенный сервер), проверяет код состояния из $http_response_header, декодирует тело с помощью json_decode и печатает id и name каждого пользователя.
Вывод: PHP-скрипт

POST с JSON-телом

Отправка данных — зеркальное отражение: закодируйте массив, положите его в контекст как content с нужным заголовком Content-Type, отправьте POST — а затем декодируйте ответ сервера, который здесь несёт присвоенный сервером id.

Отправляем массив, читаем ответ

Массив уходит в виде JSON, а созданная запись возвращается со своим новым id — полный путь записи API-клиента в одной небольшой программе.

Prompt
Напишите PHP-скрипт, который кодирует нового пользователя в JSON и отправляет его методом POST через контекст потока с типом содержимого application/json на сервер, который присваивает id и отвечает 201 (в демонстрации — локальный встроенный сервер), затем декодирует ответ и печатает состояние и созданного пользователя с его новым id.
Вывод: PHP-скрипт