PUT против POST – разница между ними

Ключевые различия между PUT и POST

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

Что такое метод PUT?

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

Что такое POST-метод?

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

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

Различия между PUT и POST в REST API

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

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

Пример ПУТа

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

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

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

Запрос

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 20

<p>New File</p>

Ответы

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

Если целевой ресурс не имеет никакого представления, сервер должен сообщить об этом пользователю, отправив ответ с кодом 201 (Создано).

 HTTP/1.1 201 Created
Content-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.1
Host: abc.example
Content-Type: application/x-www-form-urlencoded
Content-Length: 40

field1=value1&field2=value2

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

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

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

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

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

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

Вот шаги для тестирования 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-данных.

Ежедневная рассылка Guru99

Начните свой день с последних и самых важных новостей об искусственном интеллекте, которые мы представляем вам прямо сейчас.