Что такое REST, из чего состоит запрос и ответ
Что проверяют
Понимаете ли вы, что REST это набор ограничений архитектуры, а не «JSON по HTTP». И знаете ли устройство сообщения по частям.
Как отвечать
REST это архитектурный стиль. Ключевые ограничения: клиент-сервер, отсутствие состояния на сервере между запросами, кэшируемость, единообразный интерфейс (ресурсы, адреса, стандартные методы), слоистость.
Ресурс это существительное, действие это метод. /users/42 и DELETE, а не /deleteUser?id=42.
Запрос состоит из:
- строки запроса: метод, путь с параметрами, версия протокола;
- заголовков:
Host,Authorization,Content-Type,Accept, cookie; - тела: у POST, PUT и PATCH, обычно JSON. У GET тела нет.
Ответ состоит из:
- строки статуса: версия и код (200, 201, 204, 400, 401, 403, 404, 409, 422, 500);
- заголовков:
Content-Type,Cache-Control,ETag,Location, заголовки CORS; - тела: представление ресурса или описание ошибки.
Отсутствие состояния означает, что каждый запрос самодостаточен: сервер не помнит предыдущий, и авторизация приходит в каждом. Именно это позволяет ставить несколько инстансов за балансировщиком.
Где спотыкаются
Называют REST протоколом. Это стиль, а протокол здесь HTTP.
Ставят глаголы в адреса и теряют единообразный интерфейс.
Не могут объяснить разницу 401 и 403: первое про то, что вас не опознали, второе про то, что опознали и не разрешили.
Не знают про отсутствие состояния и предлагают хранить сессию в памяти сервера, не задумываясь о втором инстансе.