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

«Какие HTTP-методы используются в REST API и для чего?» — вопрос из категории Сети, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

REST API использует стандартные HTTP-методы для выполнения операций CRUD (Create, Read, Update, Delete) над ресурсами.

Основные методы:

  1. GET - получение данных (Read)

    • Идемпотентный и безопасный метод
    • Не должен изменять состояние сервера
      GET /api/users
      GET /api/users/123
      GET /api/users?status=active
  2. POST - создание нового ресурса (Create)

    • Не идемпотентный
    • Тело запроса содержит данные для создания
      
      POST /api/users
      Content-Type: application/json

    { "name": "John Doe", "email": "john@example.com" }

  3. PUT - полное обновление ресурса (Update)

    • Идемпотентный метод
    • Заменяет весь ресурс новыми данными
      
      PUT /api/users/123
      Content-Type: application/json

    { "name": "John Smith", "email": "john.smith@example.com" }

  4. PATCH - частичное обновление ресурса (Update)

    • Обновляет только указанные поля
      
      PATCH /api/users/123
      Content-Type: application/json

    { "email": "new.email@example.com" }

  5. DELETE - удаление ресурса (Delete)

    • Идемпотентный метод
      DELETE /api/users/123

Вспомогательные методы:

  1. HEAD - аналогичен GET, но возвращает только заголовки

    • Полезен для проверки существования ресурса
  2. OPTIONS - возвращает поддерживаемые методы для ресурса

    OPTIONS /api/users
    
    Ответ:
    Allow: GET, POST, PUT, DELETE, OPTIONS

Соответствие HTTP-статусов:

  • 200 OK - успешный GET, PUT, PATCH
  • 201 Created - успешный POST
  • 204 No Content - успешный DELETE
  • 400 Bad Request - неверный запрос
  • 404 Not Found - ресурс не найден
  • 405 Method Not Allowed - метод не поддерживается