Идея состоит в том, что тело ответа дает вам страницу, которая связывает вас с вещью:
201 Создано
Код состояния 201 (Создан) указывает, что запрос был выполнен и привел к созданию одного или нескольких новых ресурсов. Основной ресурс, созданный запросом, идентифицируется либо полем заголовка Location в ответе, либо, если поле Location не получено, эффективным URI запроса.
Это означает, что вы бы включили Location
в ответ header , который дает URL-адрес, где вы можете найти недавно созданную вещь :
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Тело ответа
Затем они упоминают, что вы должны включить в ответ body :
Полезная нагрузка ответа 201 обычно описывает и ссылается на созданный ресурс (ы).
Для человека, использующего браузер, вы даете ему то, на что он может взглянуть, и нажимаете, чтобы получить доступ к его недавно созданному ресурсу:
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Content-Type: text/html
Your answer has been saved!
Click <A href="/a/36373586/12597">here</A> to view it.
Если страница будет использоваться только роботом, то имеет смысл, чтобы ответ был читаемым на компьютере:
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Content-Type: application/xml
<createdResources>
<questionID>1860645</questionID>
<answerID>36373586</answerID>
<primary>/a/36373586/12597</primary>
<additional>
<resource>/1376194/sozdaite-zapros-s-pomoschy-post-kody-otvetov-200-ili-201-i-soderzhanie</resource>
<resource>http://stackoverflow.com/a/1962757/12597</resource>
</additional>
</createdResource>
Или, если вы предпочитаете:
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Content-Type: application/json
{
"questionID": 1860645,
"answerID": 36373586,
"primary": "/a/36373586/12597",
"additional": [
"/1376194/sozdaite-zapros-s-pomoschy-post-kody-otvetov-200-ili-201-i-soderzhanie",
"http://stackoverflow.com/a/36373586/12597"
]
}
Ответ полностью зависит от вас; это произвольно то, что вы хотите.
Кэш дружественный
Наконец, есть оптимизация, благодаря которой я могу предварительно кэшировать созданный ресурс (потому что у меня уже есть контент; я только что загрузил его). Сервер может вернуть дату или ETag, которые я могу сохранить с только что загруженным контентом:
См. Раздел 7.2 для обсуждения значения и назначения полей заголовка валидатора, таких как ETag и Last-Modified, в ответе 201.
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/23704283/12597
Content-Type: text/html
ETag: JF2CA53BOMQGU5LTOQQGC3RAMV4GC3LQNRSS4
Last-Modified: Sat, 02 Apr 2016 12:22:39 GMT
Your answer has been saved!
Click <A href="/a/36373586/12597">here</A> to view it.
И ETag
с являются чисто произвольными значениями. Иметь их по-разному, когда ресурс меняется (а кэши нужно обновлять) - это все, что имеет значение. ETag обычно представляет собой хеш (например, SHA2). Но это может быть база данных rowversion
или инкрементный номер ревизии. Все, что изменится , когда вещь изменится.