Распространенные методы 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:
Любые вопросы? Вы можете связаться со мной ЗДЕСЬ