Что такое 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: 20New 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:
Шаг 1) Обновите ресурсы с помощью запроса PUT.
Шаг 2) Используйте метод GET для ресурса. Если запрос PUT будет успешным, вы получите новые данные. Этот метод завершится ошибкой, если предоставленные данные в запросе недействительны. Поэтому ничего обновлять не будет.
Тестирование 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.