PUT vs POST: в чем разница?

Содержание:

Anonim

Что такое PUT?

Метод PUT используется для обновления ресурса, доступного на сервере. Обычно он заменяет все, что существует по целевому URL, чем-то другим. Вы можете использовать его для создания нового ресурса или перезаписи существующего. PUT запрашивает, чтобы закрытый объект был сохранен под предоставленным запрошенным URI (унифицированный идентификатор ресурса).

В этом руководстве вы узнаете:

  • Что такое PUT?
  • Что такое POST?
  • Пример PUT
  • Пример POST
  • Разница между PUT и POST
  • Тестирование API с помощью запросов PUT
  • Тестирование API с помощью POST-запросов
  • Преимущества метода PUT
  • Преимущества метода POST

Что такое POST?

POST - это метод, поддерживаемый HTTP и

показывает, что веб-сервер принимает данные, включенные в тело запрошенного сообщения. POST часто используется World Wide Web для отправки пользовательских данных на веб-сервер или при загрузке файла.

КЛЮЧЕВЫЕ ОТЛИЧИЯ:

  • Метод PUT вызывается, когда вам нужно изменить один ресурс, в то время как метод POST вызывается, когда вам нужно добавить дочерний ресурс.
  • Ответ метода PUT можно кэшировать, но нельзя кэшировать ответы метода PUT.
  • Вы можете использовать запрос UPDATE в PUT, тогда как вы можете использовать запрос на создание в POST.
  • В методе PUT клиент решает, какой ресурс URI должен иметь, а в методе POST сервер решает, какой ресурс URI должен иметь.
  • PUT работает как конкретный, а POST - как абстрактный.
  • Если вы отправите один и тот же запрос PUT несколько раз, результат останется прежним, но если вы отправите один и тот же запрос POST несколько раз, вы получите разные результаты.
  • Метод PUT идемпотентен, тогда как метод POST не идемпотентен.

Пример PUT

Вот пример веб-сервера метода PUT:

HTTP PUT http://www.google.com/users/234

HTTP PUT http://www.google.com/users/234/accounts/567

Запрос

PUT /new.html HTTP/1.1Host: example.comContent-type: text/htmlContent-length: 20

New File

Ответы

Если целевой ресурс имеет текущее представление и изменяется в соответствии с состоянием вложенного представления, то сервер должен отправить два ответа. Первый код ответа - 200 (ОК), второй - 204 (Нет содержимого).

Если целевой ресурс не имеет представления, то сервер должен проинформировать пользователя, отправив ответ 201 code (Created).

 HTTP/1.1 201 CreatedContent-Location: /new.html

Пример POST

Вот пример метода POST:

HTTP POST http://www.google.com/users

HTTP POST http://www.google.com/users/234/accounts

Форма, использующая тип содержимого application / x-www-form-urlencoded по умолчанию:

POST /test HTTP/1.1Host: abc.exampleContent-Type: application/x-www-form-urlencodedContent-Length: 40field1=value1&field2=value2

Разница между PUT и POST

Вот важное различие между методами PUT и POST:

ПОЛОЖИТЬ ПОЧТОВЫЙ
Этот метод идемпотентен. Этот метод не идемпотентный.
Метод PUT вызывается, когда вам нужно изменить один ресурс, который уже является частью коллекции ресурсов. Метод POST вызывается, когда вам нужно добавить дочерний ресурс в коллекцию ресурсов.
RFC-2616 показывает, что метод PUT отправляет запрос на закрытый объект, хранящийся в предоставленном URI запроса. Этот метод запрашивает у сервера принятие объекта, заключенного в запросе.
Синтаксис метода PUT: PUT / questions / {идентификатор-вопроса}. Синтаксис метода POST: POST / questions.
Ответ метода PUT можно кэшировать. Вы не можете кэшировать ответы метода PUT.
PUT / vi / juice / orders / 1234 указывает, что вы обновляете ресурс, который обозначен как «1234». POST / vi / juice / orders указывает, что вы создаете новый ресурс и возвращаете идентификатор для описания ресурса.
Если вы отправите один и тот же запрос несколько раз, результат останется прежним. Если вы отправите один и тот же запрос POST более одного раза, вы получите разные результаты.
PUT работает как специфический. POST работает как абстрактный.
Мы используем запрос UPDATE в PUT. Мы используем запрос на создание в POST.
В методе PUT клиент решает, какой ресурс URI должен иметь. В методе POST сервер решает, какой ресурс URI должен иметь.

Тестирование API с помощью запросов PUT

Вот шаги для тестирования API с запросами PUT:

Тестирование API с помощью запросов PUT

Шаг 1) Обновите ресурсы с помощью запроса PUT.

Шаг 2) Используйте метод GET для ресурса. Если запрос PUT будет успешным, вы получите новые данные. Этот метод завершится ошибкой, если предоставленные данные в запросе недействительны. Поэтому ничего обновлять не будет.

Тестирование API с помощью POST-запросов

Вот шаги для тестирования API с помощью POST-запросов:

Тестирование API с помощью POST-запросов

Шаг 1) Создайте ресурс с помощью запроса POST и убедитесь, что он возвращает код состояния 200.

Шаг 2) Сделайте GET-запрос для этого ресурса и сохраните данные в правильном формате.

Шаг 3) Вам необходимо добавить тесты, которые гарантируют, что запросы POST не будут содержать неверные данные.

Преимущества метода PUT

Вот плюсы / преимущества использования метода PUT:

  • Это поможет вам сохранить предоставленную сущность под предоставленным URI.
  • Если предоставленная сущность уже существует, вы можете выполнить операцию обновления или создать с помощью этого URI.
  • Вы можете создавать ресурс сколько угодно раз.
  • Создать ресурс с помощью метода PUT очень просто.
  • Вам не нужно проверять, нажимал ли пользователь кнопку отправки несколько раз или нет.
  • Он может идентифицировать сущность, содержащуюся в запросе.

Преимущества метода POST

Вот плюсы / преимущества использования метода POST:

  • Этот метод помогает определить URI ресурса.
  • Указать новый заголовок местоположения ресурса очень просто, используя заголовок местоположения.
  • Вы можете отправить запрос на принятие объекта в качестве нового подчиненного ресурса, который идентифицируется URI.
  • Вы можете отправлять пользовательские данные на веб-сервер.
  • Это очень полезно, когда вы не знаете URL-адрес для хранения какого-либо ресурса.
  • Используйте POST, когда вам нужен сервер, который контролирует создание URL-адресов ваших ресурсов.
  • POST - безопасный метод, поскольку его запросы не остаются в истории браузера.
  • Вы можете легко передать большой объем данных с помощью почты.
  • Вы можете сохранить конфиденциальность данных.
  • Этот метод можно использовать для отправки двоичных данных, а также данных ASCII.