Распространенные методы HTTP! GET, POST, PUT, PATCH и DELETE

Предварительные требования:

  • Никто

Терминология

Методы:

УДАЛИТЬ: удалить ресурс, идентифицированный URI

GET: запрашивает данные из указанной конечной точки

PATCH: используется для изменения ресурсов

POST: отправляет данные в указанную конечную точку для создания или обновления ресурса.

PUT: используется для обновления ресурсов

Другое:

Идемпотент: операция, которая дает одинаковые результаты при многократном выполнении.

JSON: JavaScript Object Notation, легкий формат для хранения и передачи данных.

URI: унифицированный идентификатор ресурса

HTTP-глаголы

ПОЧТА

Мы можем рассматривать POST как способ создания новых ресурсов.

Создание
Обычно создаваемые ресурсы являются подчиненными; что мы POST с родителем, а служба связывает новый ресурс с родителем.

В случае успеха
Мы должны ожидать, что будет возвращен HTTP-статус 201, включая ссылку на вновь созданный ресурс.

Идемпотент?
POST не идемпотент, хотя ожидается, что выполнение двух идентичных POST запросов приведет к созданию двух идентичных ресурсов.

Пример
http://www.example.com/customers

ПОЛУЧАТЬ

Мы думаем о GET запросах как о способе получения ресурса (ов)

Чтение
Мы можем читать существующие ресурсы, которые обычно возвращаются клиенту в формате JSON.

При успешном выполнении
Мы должны ожидать, что будет возвращен HTTP-статус 200 (ОК) с представлением запроса обычно в формате JSON.

Идемпотентность?
Поскольку мы читаем ресурсы, они должны быть одинаковыми каждый раз. Также не должно быть риска коррупции, поскольку мы читаем ресурсы, а не создаем или изменяем их.

Пример
http://www.example.com/customers/12345

ПОЛОЖИЛ

Мы думаем о PUT запросах как о способе обновления ресурса (ов)

Обновление
При обновлении ресурсов мы можем ожидать, что существующий ресурс будет заменен обновленным. Если обновление выполняется для ресурса, который в настоящее время не существует, PUT создает ресурс и возвращает 201, чтобы представить успешное создание ресурса.

При успехе
При успешном обновлении возвращается 200, но если ресурс создан, возвращается 201. Тело можно вернуть, но это необязательно.

Идемпотент?
PUT может быть счетчиком, который четко определяет, что PUT запрос не может быть idempotent, и рекомендуется, чтобы в документации было записано, если запрос idempotent

Пример

http://www.example.com/customers/12345

ПЛАСТЫРЬ

Запрос PATCH изменяет ресурсы и содержит только изменения ресурса (то есть исправление, а не весь ресурс)

патч
PATCH внешне похож на PUT, но не потребляет столько полосы пропускания, отправляя полный ресурс. Сам патч можно рассматривать как набор инструкций, обновляющих существующий ресурс с использованием языка патчей (JSON Patch - один из таких языков).

При успехе
При успешном исправлении возвращается 200.

Идемпотентный?
Патчи обновляют ресурс, поэтому мы не ожидаем, что запрос будет idempotent, если не позаботиться об этом (и в равной степени предотвратить коллизии между несколькими запросами на исправление).

Пример
http://www.example.com/customers/12345

УДАЛЯТЬ

DELETE удаляет ресурс

delete
DELETE удаляет ресурс, указанный в URI.

При успешном завершении
При успешном удалении возвращается 200.

Идемпотент?
По определению это notidempotent, поскольку можно ожидать, что вызов DELETE несколько раз вернет 404 NOT FOUND, поскольку DELETE уже был вызван для ресурса.

Пример
http://www.example.com/customers/12345

Сопоставьте HTTP-команды с CRUD-операциями

Заключение

Вам следует знать что-нибудь о методах HTTP во время вашей карьеры разработчика программного обеспечения. Вы удивитесь, сколько разработчиков путают PUT и PATCH (например). Это руководство должно дать вам некоторое представление о различиях и ответах, которые вы можете ожидать от своего клиента.

Привет! Если тебе это нравится, почему бы не написать мне в Твиттер?

Расширьте свои знания

Вы можете узнать больше о REST и CRUD по этой ссылке.

Контактное лицо в Twitter:

Любые вопросы? Вы можете связаться со мной ЗДЕСЬ