← Назад к вопросам

Какие знаешь методы HTTP запросов по REST?

2.0 Middle🔥 132 комментариев
#Браузер и сетевые технологии

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Методы HTTP запросов в REST

REST (Representational State Transfer) — это архитектурный стиль, который использует стандартные **HTTP методы** для выполнения операций над ресурсами, идентифицируемыми URI. Каждый метод имеет определённую семантику, что делает API предсказуемым и удобным. Вот основные методы:

Основные методы (CRUD)

  1. GET — получение данных

    • Используется для чтения ресурса без побочных эффектов.
    • Должен быть безопасным (idempotent): повторные запросы возвращают одинаковый результат.
    • Пример: получение списка пользователей или конкретного пользователя.
    GET /api/users
    GET /api/users/123
    
  2. POST — создание ресурса

    • Используется для создания нового ресурса или выполнения операций, не вписывающихся в другие методы.
    • Не является ни безопасным, ни идемпотентным: каждый запрос может создавать новый ресурс.
    • Пример: создание нового пользователя.
    POST /api/users
    Content-Type: application/json
    
    {"name": "John", "email": "john@example.com"}
    
  3. PUT — полное обновление ресурса

    • Используется для полного замещения ресурса. Если ресурс не существует, может создавать его (зависит от реализации).
    • Идемпотентен: повторные запросы с теми же данными дают одинаковый результат.
    • Пример: обновление всех полей пользователя.
    PUT /api/users/123
    Content-Type: application/json
    
    {"name": "John Updated", "email": "updated@example.com"}
    
  4. PATCH — частичное обновление ресурса

    • Используется для частичного обновления ресурса. Отправляются только изменяемые поля.
    • Теоретически идемпотентен, но на практике зависит от реализации.
    • Пример: обновление только email пользователя.
    PATCH /api/users/123
    Content-Type: application/json
    
    {"email": "newemail@example.com"}
    
  5. DELETE — удаление ресурса

    • Используется для удаления ресурса.
    • Идемпотентен: повторные запросы возвращают тот же результат (ресурс уже удалён).
    • Пример: удаление пользователя.
    DELETE /api/users/123
    

Дополнительные методы

  1. HEAD — получение метаданных

    • Аналогичен GET, но возвращает только заголовки ответа без тела.
    • Полезен для проверки существования ресурса или получения метаинформации.
    HEAD /api/users/123
    
  2. OPTIONS — получение поддерживаемых методов

    • Используется для определения доступных методов для ресурса.
    • Важен для CORS (Cross-Origin Resource Sharing) в веб-приложениях.
    OPTIONS /api/users
    

    Ответ включает заголовок Allow: GET, POST, PUT, DELETE.

  3. TRACE — отладка

    • Возвращает полученный запрос, позволяя клиенту увидеть, какие изменения были внесены промежуточными серверами.
    • Редко используется в REST API из-за потенциальных уязвимостей безопасности.
  4. CONNECT — установка туннеля

    • Используется для установки сетевого соединения через прокси (например, для SSL).
    • Не применяется в типичных RESTful взаимодействиях.

Практические аспекты использования

  • Идемпотентность и безопасность:

    • Безопасные методы: GET, HEAD, OPTIONS (не изменяют состояние сервера).
    • Идемпотентные методы: GET, HEAD, OPTIONS, PUT, DELETE (повторные запросы дают тот же эффект).
    • POST и PATCH не гарантируют идемпотентность.
  • Соответствие операциям CRUD:

    • Create → POST
    • Read → GET
    • Update → PUT/PATCH
    • Delete → DELETE
  • Статус коды ответа:

    • Успешные: 200 (OK), 201 (Created), 204 (No Content).
    • Ошибки клиента: 400 (Bad Request), 404 (Not Found).
    • Ошибки сервера: 500 (Internal Server Error).

Пример проектирования REST API

// Типичная структура endpoints для ресурса "статьи"
GET    /articles          // список статей
POST   /articles          // создание статьи
GET    /articles/{id}     // получение конкретной статьи
PUT    /articles/{id}     // полное обновление статьи
PATCH  /articles/{id}     // частичное обновление статьи
DELETE /articles/{id}     // удаление статьи

Понимание и правильное применение HTTP методов — основа построения качественного RESTful API, который будет интуитивно понятен разработчикам, масштабируем и соответствует принципам REST. Важно также учитывать семантическую корректность (например, не использовать GET для изменения данных) и безопасность (ограничивать методы в зависимости от авторизации).

Какие знаешь методы HTTP запросов по REST? | PrepBro