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

Сервер запускает ваш скрипт

В PHP обслуживание веб-запросов устроено наоборот по сравнению с большинством языков: вы не пишете сервер, который работает бесконечно, — веб-сервер сам запускает ваш скрипт, по одному разу на каждый запрос. Скрипт и есть обработчик: суперглобальные переменные вроде $_SERVER и $_GET хранят запрос, а header() вместе с echo формируют ответ.

В состав PHP входит собственный веб-сервер для разработки: php -S host:port router.php отвечает на каждый запрос, запуская этот единственный скрипт. Примеры здесь действительно его запускают: каждый из них записывает свой скрипт-обработчик во временный файл, стартует php -S на свободном порту как дочерний процесс, отправляет ему настоящие HTTP-запросы, печатает ответы и останавливает сервер — так что каждый пример выполняется и завершается сам.


Первый обработчик

Самый маленький возможный скрипт-обработчик выводит одну строку текста. Всё, что делает API, — JSON, коды состояния, маршрутизация — происходит внутри той же схемы: запрос на входе, echo на выходе.

Приветствие от обработчика

Скрипт-обработчик выводит одну строку; клиент читает именно её как тело ответа, а статус 200 OK подставляется автоматически.

Prompt
Напишите PHP-скрипт с самым маленьким скриптом-обработчиком, который выводит строку с приветствием. Обслужите его встроенным веб-сервером PHP на свободном порту, отправьте один GET-запрос и напечатайте статус и тело ответа, затем остановите сервер.
Вывод: PHP-скрипт

Ответ в формате JSON

Обработчик API делает три вещи: устанавливает заголовок Content-Type, выбирает код состояния и кодирует данные — сначала header(), затем echo json_encode($value).

Порядок важен: заголовки должны быть отправлены до первого байта тела.

JSON-эндпоинт

Обработчик кодирует массив прямо в ответ. Клиент получает корректный JSON и правильный тип содержимого — это скелет каждого эндпоинта в остальной части этой группы.

Prompt
Напишите PHP-скрипт, обработчик которого отвечает массивом пользователя, закодированным в JSON, устанавливая заголовок Content-Type через header() перед выводом. Обслужите его встроенным сервером, запросите его и напечатайте статус, тип содержимого и тело JSON.
Вывод: PHP-скрипт