Как обычно выдается запрос 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.