Когда оптимальное время для использования метода HTTP PATCH вместо PUT? - PullRequest
1 голос
/ 07 марта 2020

Хотя PUT & PATCH используются для тех же целей, что и для обновления ресурса. Но когда я должен использовать PATCH вместо PUT? И то же самое касается и наоборот.

Ответы [ 2 ]

2 голосов
/ 07 марта 2020

когда мне следует использовать PATCH вместо PUT?

Использовать патч, когда документ патча намного меньше, чем полное представление, и вам не нужны преимущества идемпотентного обмена сообщениями .

И PATCH, и PUT имеют семантику удаленной авторизации, то есть запросы означают: «Пожалуйста, сделайте так, чтобы ваша копия целевого ресурса соответствовала моей копии». В случае PUT мы отправляем полную копию нового представления; в случае PATCH мы отправляем документ исправления, то есть представление изменений, которые мы внесли.

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

PATCH равен не идемпотент; гарантии, которые он дает, очень похожи на гарантии POST. Поэтому компонент общего назначения НЕ будет знать, что можно повторить запрос в случае потери ответа.

(Существуют некоторые форматы документов исправлений, которые поддерживают идемпотентную обработку - JSON Patch является одним из примеров. Но это не , как правило, правда, и эти знания не доступны в «легко стандартизируемой форме», которую могут обнаружить клиенты общего назначения.)

2 голосов
/ 07 марта 2020

Используйте PUT, когда тело, которое вы отправляете, является полным ресурсом для создания или перезаписи - то есть, по сути, то же самое, что вы GET вернули бы по тому же адресу. Используйте PATCH, если тело является представлением о том, как изменить существующий ресурс.

...