Как обычно выдается запрос HTTP PUT?

Я знаю, что HTTP PUT - это идемпотентный запрос, который хранит что-то в определенном URI в соответствии с определением (цитируется из rfc)

The PUT method requests that the enclosed entity be stored under the supplied Request-URI.

Но каково определение "закрытого объекта"? Мне не представляется возможным отправить данные формы (например, для запроса HTTP POST). Как насчет отправки представления объекта через JSON/XML или в другие форматы сериализации?

Короче говоря, как отправить HTTP-запрос HTTP для хранения/обновления информации в конкретном URI, то?

Ответы

Ответ 1

Закрытый объект - это данные полезной нагрузки, содержащиеся в теле сообщения HTTP (после удаления всех кодировок передачи). Если у вас возникли проблемы с отправкой тела сообщения, возможно, вы забыли включить Content- Заголовок длины - один из двух способов указать, что сообщение HTTP имеет тело.

PUT - это то же самое, что и POST, за исключением этой семантической разницы: с POST URI идентифицирует ресурс, который будет обрабатывать объект, такой как сервлет. С помощью PUT URI идентифицирует сам объект, например файл, который будет создан/заменен содержимым тела объекта.

Ответ 2

В REST вы:

GET - retrieve resource
POST - create new resource
PUT - update existing resource
DELETE - delete resource

Таким образом, глагол PUT используется для обновления существующего ресурса на сервере. В зависимости от клиента существуют различные способы отправки запроса PUT. Например, с jquery AJAX:

$.ajax({
    type: 'PUT',
    url: '/products/123',
    data: { name: 'new product name' }
});

Ответ 3

не уверен, что это правильный ответ, но я, вероятно, просто попробую

предположим, что после выдачи HTTP GET на http://example.org/api/foo/1 я получаю это

GET http://example.org/api/foo/1
Accept: application/json

Ответ:

{
    "foo": "bar"
}

то для запроса запроса на размещение

PUT http://example.org/api/foo/1
{
    "foo": "baz"
}

пока приложение, размещенное на конечной точке, понимает формат, который я отправляю.

Ответ 4

Вы отправляете HTTP PUT, где тело - это "закрытый объект", который вы хотите сохранить по запрашиваемому URL. Очень похоже на POST, это только семантика, как указано в RFC, которые отличаются.

Ответ 5

Если Request-URI ссылается на уже существующий ресурс, закрытый объект СЛЕДУЕТ считаться модифицированной версией той, которая находится на сервере происхождения. Если Request-URI не указывает на существующий ресурс и что URI может быть определен как новый ресурс запрашивающим пользовательским агентом, исходный сервер может создать ресурс с этим URI.