Создайте запрос с POST, который коды ответа 200 или 201 и содержание

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

Я планирую к POST к

http://myhost/serviceX/someResources

Предположим, что работы, какой код ответа я должен использовать? И какое содержание могло бы, я возвращаюсь.

Я смотрю на определения кодов ответа HTTP и вижу эти возможности:

200: Возвратите описание объекта или содержащий результат действия;

201: что означает СОЗДАННЫЙ. При значении *запрос был обработан и привел к новому создаваемому ресурсу. На недавно созданный ресурс может сослаться URI, возвращенный в объекте ответа с самым определенным URI для ресурса, данного полем заголовка Местоположения. Ответ ДОЛЖЕН включать объект, содержащий список характеристик ресурса и местоположения (местоположений), из которого агент пользователя или агент пользователя могут выбрать одно самое соответствующее. Формат объекта указан типом среды, данным в поле заголовка Типа контента. *

Последние звуки больше в соответствии со спецификацией Http, но я нисколько не ясен что

Ответ ДОЛЖЕН включать объект, содержащий список характеристик ресурса и местоположения (местоположений)

средства.

Рекомендации? Интерпретации?

110
задан Mark Stewart 20 January 2015 в 19:54
поделиться

2 ответа

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19

Это просто разделенная двоеточием клавиша-значение.

ETag: "xyzzy"

Это могут быть текстовые данные любого типа - обычно я включаю JSON строку с идентификатором созданного элемента. Простота тестирования сама по себе делает его включение оправданным.

ETag: "{ id: 1234, uri: 'http://domain.com/comments/1234', type: 'comment' }"

В данном примере идентификатор, uri и тип создаваемого элемента являются "характеристиками и местоположением ресурса".

15
ответ дан 24 November 2019 в 03:13
поделиться

Я думаю atompub REST API является отличным примером спокойного сервиса. Смотрите фрагмент ниже из спецификации атомпба:

POST /edit/ HTTP/1.1
Host: example.org
User-Agent: Thingio/1.0
Authorization: Basic ZGFmZnk6c2VjZXJldA==
Content-Type: application/atom+xml;type=entry
Content-Length: nnn
Slug: First Post

<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <title>Atom-Powered Robots Run Amok</title>
  <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
  <updated>2003-12-13T18:30:02Z</updated>
  <author><name>John Doe</name></author>
  <content>Some text.</content>
</entry>

Сервер сигнализирует об успешном создании с кодом состояния 201. Ответ включает в себя заголовок Location, указывающий на URI записи члена Atom Entry, и представление этой записи в теле ответа.

HTTP/1.1 201 Created
Date: Fri, 7 Oct 2005 17:17:11 GMT
Content-Length: nnn
Content-Type: application/atom+xml;type=entry;charset="utf-8"
Location: http://example.org/edit/first-post.atom
ETag: "c180de84f991g8"  

<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom">
  <title>Atom-Powered Robots Run Amok</title>
  <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>
  <updated>2003-12-13T18:30:02Z</updated>
  <author><name>John Doe</name></author>
  <content>Some text.</content>
  <link rel="edit"
      href="http://example.org/edit/first-post.atom"/>
</entry>

Запись, созданная и возвращенная коллекцией, может не совпадать с записью, введенной клиентом в POSTed. Сервер MAY изменяет значения различных элементов во входе, таких как atom:id, atom:update и atom:author, и MAY выбирает удаление или добавление других элементов и атрибутов, или изменение содержимого элемента и значений атрибутов.

.
87
ответ дан 24 November 2019 в 03:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: