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

18. Web и API

Что такое REST API?​

Junior

Ответ: REST (Representational State Transfer) — это архитектурный стиль проектирования сетевых приложений. Он основан на протоколе связи без сохранения состояния (stateless), клиент-серверной модели с поддержкой кеширования — и практически во всех случаях используется протокол HTTP. Подробнее: What is REST API?


Какие основные HTTP-методы используются в REST?​

Junior

Ответ:

  • GET: Получение ресурса.
  • POST: Создание нового ресурса.
  • PUT: Обновление/замена существующего ресурса.
  • PATCH: Частичное обновление существующего ресурса.
  • DELETE: Удаление ресурса.
  • OPTIONS: Описание доступных способов взаимодействия с целевым ресурсом.
  • HEAD: То же, что GET, но возвращает только заголовки (без тела ответа).

В чём разница между GET и POST?​

Junior

Ответ:

  • GET: Данные передаются в URL. Используется для получения данных.
  • POST: Данные передаются в теле запроса. Используется для отправки данных.

Что такое HTTP-коды состояния? Приведите примеры.​

Junior

Ответ:

  • 200 OK: Успешный запрос.
  • 201 Created: Ресурс успешно создан.
  • 400 Bad Request: Ошибка клиента.
  • 401 Unauthorized: Пользователь не аутентифицирован.
  • 403 Forbidden: Пользователь аутентифицирован, но не имеет прав доступа.
  • 404 Not Found: Ресурс не найден.
  • 500 Internal Server Error: Ошибка сервера.

Что означает «stateless» в контексте REST?​

Middle

Ответ: Каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для понимания и обработки запроса. Сервер не сохраняет контекст клиента между запросами.


SOAP и REST​

Middle

Ответ:

  • SOAP: Основан на протоколе, использует XML, имеет жёсткую структуру, подходит для обеспечения безопасности и ACID-совместимости.
  • REST: Архитектурный стиль, использует JSON/XML, гибкий, легковесный, применяет стандартный HTTP.

REST и JSON-RPC​

Middle

Ответ:

  • REST: Ориентирован на ресурсы, использует HTTP-методы (GET, POST и др.) и коды состояния.
  • JSON-RPC: Ориентирован на методы, обычно использует POST на один эндпоинт с JSON-полезной нагрузкой, указывающей метод и параметры.

Можно ли реализовать собственный HTTP-метод, например POSTAWESOME, вместо POST? Будет ли это соответствовать REST?​

Middle

Ответ: Технически — да, можно определить и использовать пользовательские HTTP-методы. Протокол HTTP допускает расширение, и большинство веб-серверов и клиентов можно настроить для их обработки. Однако это не будет полностью соответствовать ограничению Uniform Interface в REST. REST предполагает использование стандартизированного набора методов (стандартных HTTP-глаголов) для обеспечения совместимости, предсказуемости и использования существующей веб-инфраструктуры (кеши, прокси), которая понимает только стандартные методы. Использование POSTAWESOME нарушит эти преимущества и усложнит использование вашего API.