В чем разница между методами PUT, POST и PATCH в протоколе HTTP?
В чем разница между PUT, POST и PATCH?
Ответы (9)
Разница между командами HTTP PUT, POST, GET, DELETE и PATCH IN:
Наиболее часто используемые HTTP-команды POST, GET, PUT, DELETE аналогичны операциям CRUD (создание, чтение, обновление и удаление) в базе данных. Мы указываем эти HTTP-глаголы в верхнем регистре. Итак, ниже приводится их сравнение.
- создать - POST
- читать - ПОЛУЧИТЬ
- обновление - PUT
- удалить - УДАЛИТЬ
PATCH: частичное изменение ресурса. Если вам нужно обновить только одно поле для ресурса, вы можете использовать метод PATCH.
Примечание.
Поскольку POST, PUT, DELETE изменяют содержимое, тесты с Fiddler для указанного ниже URL-адреса просто имитируют обновления. На самом деле он не удаляет и не изменяет. Мы можем просто видеть коды состояния, чтобы проверить, происходят ли вставки, обновления или удаления.
URL: http://jsonplaceholder.typicode.com/posts/
1) ПОЛУЧИТЬ:
GET - это простейший тип метода HTTP-запроса; тот, который браузеры используют каждый раз, когда вы нажимаете ссылку или вводите URL-адрес в адресную строку. Он указывает серверу передать клиенту данные, идентифицированные URL-адресом. Данные никогда не должны изменяться на стороне сервера в результате запроса GET. В этом смысле запрос GET доступен только для чтения.
Проверка с помощью Fiddler или PostMan. Мы можем использовать Fiddler для проверки ответа. Откройте Fiddler и выберите вкладку Compose. Укажите команду и URL-адрес, как показано ниже, и нажмите «Выполнить», чтобы проверить ответ.
Глагол: ПОЛУЧИТЬ
url: http://jsonplaceholder.typicode.com/posts/
Ответ: вы получите ответ в следующем виде:
«userId»: 1, «id»: 1, «title»: «sunt aut ...», «body»: «quia et suscipit ...»
В «счастливом» (или безошибочном) пути GET возвращает представление в XML или JSON и код ответа HTTP 200 (OK). В случае ошибки он чаще всего возвращает 404 (НЕ НАЙДЕН) или 400 (НЕПРАВИЛЬНЫЙ ЗАПРОС).
2) ОПУБЛИКОВАТЬ:
Глагол POST чаще всего используется для создания новых ресурсов. В частности, он используется для создания подчиненных ресурсов. То есть подчиняться какому-то другому (например, родительскому) ресурсу.
При успешном создании вернуть HTTP-статус 201, возвращая заголовок Location со ссылкой на вновь созданный ресурс с HTTP-статусом 201.
Проверка с помощью Fiddler или PostMan. Мы можем использовать Fiddler для проверки ответа. Откройте Fiddler и выберите вкладку Compose. Укажите команду и URL-адрес, как показано ниже, и нажмите «Выполнить», чтобы проверить ответ.
Глагол: POST
url: http://jsonplaceholder.typicode.com/posts/
Тело запроса:
data: {title: 'foo', body: 'bar', userId: 1000, Id: 1000}
Ответ: вы получите код ответа 201.
Если мы хотим проверить вставленную запись с Id = 1000, измените команду на Get, используйте тот же URL и нажмите Execute.
Как было сказано ранее, указанный выше URL-адрес разрешает только чтение (GET), мы не можем прочитать обновленные данные в реальном времени.
3) ПОСТАВИТЬ:
PUT чаще всего используется для возможности обновления, PUT-ing к известному URI ресурса с телом запроса, содержащим недавно обновленное представление исходного ресурса.
Проверка с помощью Fiddler или PostMan. Мы можем использовать Fiddler для проверки ответа. Откройте Fiddler и выберите вкладку Compose. Укажите команду и URL-адрес, как показано ниже, и нажмите «Выполнить», чтобы проверить ответ.
Глагол: PUT
url: http://jsonplaceholder.typicode.com/posts/1
Тело запроса:
data: {title: 'foo', body: 'bar', userId: 1, Id: 1}
Ответ: при успешном обновлении он возвращает 200 (или 204, если не возвращает никакого содержания в теле) из PUT.
4) УДАЛИТЬ:
DELETE довольно легко понять. Он используется для удаления ресурса, идентифицированного URI.
При успешном удалении верните HTTP-статус 200 (OK) вместе с телом ответа, возможно, представлением удаленного элемента (часто требует слишком большой пропускной способности) или завернутым ответом (см. Возвращаемые значения ниже). Либо это, либо возврат HTTP-статуса 204 (NO CONTENT) без тела ответа. Другими словами, рекомендуется использовать статус 204 без тела или ответ в стиле JSEND и статус HTTP 200.
Проверка с помощью Fiddler или PostMan. Мы можем использовать Fiddler для проверки ответа. Откройте Fiddler и выберите вкладку Compose. Укажите команду и URL-адрес, как показано ниже, и нажмите «Выполнить», чтобы проверить ответ.
Глагол: УДАЛИТЬ
url: http://jsonplaceholder.typicode.com/posts/1
Ответ: при успешном удалении он возвращает HTTP-статус 200 (ОК) вместе с телом ответа.
Пример между PUT и PATCH
PUT
Если бы мне пришлось изменить свое имя, отправьте запрос PUT для обновления:
{"first": "Nazmul", "last": "hasan"} Итак, здесь, чтобы обновить имя, нам нужно снова отправить все параметры данных.
ПАТЧ:
В запросе на исправление говорится, что мы будем отправлять только те данные, которые нам нужно изменить, не изменяя или не влияя на другие части данных. Пример: если нам нужно обновить только имя, мы передаем только имя.
Пожалуйста, перейдите по ссылкам ниже для получения дополнительной информации:
https://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to
В чем основное различие между запросом PATCH и PUT? < / а>
http://www.restapitutorial.com/lessons/httpmethods.html
title=foo&body=bar&userid=1000&id=1000
- person Shayan; 30.09.2020
PUT = заменить ВЕСЬ РЕСУРС новым предоставленным представлением
PATCH = заменить части исходного ресурса предоставленными значениями И | ИЛИ обновляются другие части ресурса, которые вы не предоставили (временные метки) И | ИЛИ обновление ресурса влияет на другие ресурсы (отношения)
вот простое описание всего:
- POST всегда предназначен для создания ресурса (не имеет значения, был ли он продублирован)
- PUT предназначен для проверки, существует ли ресурс, затем обновите, иначе создайте новый ресурс.
- PATCH всегда для обновления ресурса
Приведенное ниже определение взято из реального примера.
Обзор примера
Для всех данных клиента мы сохраняем идентификатор, чтобы найти эти данные клиента, и отправим этот идентификатор клиенту для справки.
POST
- If the client sends data without any identifier, then we will store the data and assign/generate a new identifier.
- Если клиент снова отправит те же данные без какого-либо идентификатора, мы сохраним данные и назначим / сгенерируем новый идентификатор.
- Примечание: здесь разрешено дублирование.
PUT
- If the client sends data with an identifier, then we will check whether that identifier exists. If the identifier exists, we will update the resource with the data, else we will create a resource with the data and assign/generate a new identifier.
ПАТЧ
- If the client sends data with an identifier, then we will check whether that identifier exists. If the identifier exists, we will update the resource with the data, else we will throw an exception.
Примечание. В методе PUT мы не генерируем исключение, если идентификатор не найден. Но в методе PATCH мы генерируем исключение, если идентификатор не найден.
Дайте мне знать, если у вас возникнут вопросы по вышеизложенному.
Самое простое объяснение:
POST - Создать НОВУЮ запись
PUT - если запись существует, обновить еще, создать новую запись
ПАТЧ - обновить
Читается
УДАЛИТЬ - удалить
Типы запросов
- создать - POST
- читать - ПОЛУЧИТЬ
- создать или обновить - PUT
- удалить - УДАЛИТЬ
- обновление - ПАТЧ
GET / PUT - идемпотентный PATCH иногда может быть идемпотентным
Что такое идемпотент - это означает, что если мы запускаем запрос несколько раз, он не должен влиять на его результат (тот же результат; предположим, что корова беременна, и если мы снова ее разводим, то она не может беременеть несколько раз)
get
:-
просто получить. Получите данные с сервера и покажите их пользователю
{
id:1
name:parth
email:[email protected]
}
post
:-
создать новый ресурс в базе данных. Значит, добавляет новые данные. Это не идемпотентный.
put
:-
Создать новый ресурс или добавить к существующему. Идемпотент, потому что он будет обновлять один и тот же ресурс каждый раз, и результат будет таким же. пример - исходные данные
{
id:1
name:parth
email:[email protected]
}
- выполнить put-localhost / 1 put email: [email protected]
{
id:1
email:[email protected]
}
patch
Итак, теперь пришел запрос на исправление. PATCH иногда может быть идемпотентным
id:1
name:parth
email:[email protected]
}
имя патча: w
{
id:1
name:w
email:[email protected]
}
HTTP Method GET yes POST no PUT yes PATCH no* OPTIONS yes HEAD yes DELETE yes
Ресурсы: Идемпотентность - Что такое идемпотентность?
Основное различие между запросами PUT и PATCH:
Предположим, у нас есть ресурс, содержащий имя и фамилию человека.
Если мы хотим изменить имя, мы отправляем запрос на обновление.
{ "first": "Michael", "last": "Angelo" }
Здесь, хотя мы меняем только имя, с запросом PUT мы должны отправлять оба параметра first и last.
Другими словами, необходимо снова отправить все значения, полную полезную нагрузку.
Однако, когда мы отправляем запрос PATCH, мы отправляем только те данные, которые хотим обновить. Другими словами, мы отправляем только имя для обновления, не нужно отправлять фамилию.
Подумайте об этом так ...
POST - создать
PUT - заменить
ПАТЧ - обновить
Читается
УДАЛИТЬ - удалить
Вполне логичная разница между PUT и PATCH с отправкой полных и частичных данных для замены / обновления соответственно. Тем не менее, всего пара моментов, как показано ниже
- Иногда POST рассматривается как для обновлений, а PUT для создания
- Требует ли HTTP / проверяет отправку полных или частичных данных в PATCH? В противном случае PATCH может быть таким же, как обновление, как в PUT / POST.