A idéia é que o corpo da resposta forneça uma página que o vincule à coisa:
201 Criado
O código de status 201 (criado) indica que a solicitação foi atendida e resultou na criação de um ou mais novos recursos. O recurso principal criado pela solicitação é identificado por um campo de cabeçalho Local na resposta ou, se nenhum campo Localização for recebido, pelo URI da solicitação efetiva.
Isso significa que você incluiria um Location
no cabeçalho de resposta que fornece a URL de onde você pode encontrar a coisa recém-criada :
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Corpo de resposta
Depois, eles mencionam o que você deve incluir no corpo da resposta :
A carga útil da resposta 201 normalmente descreve e vincula os recursos criados.
Para os humanos que usam o navegador, dê a eles algo que eles possam ver e clique para acessar o recurso recém-criado:
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="https://stackoverflow.com/a/36373586/12597">here</A> to view it.
Se a página for usada apenas por um robô, faz sentido que a resposta seja legível por computador:
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>http://stackoverflow.com/questions/1860645/create-request-with-post-which-response-codes-200-or-201-and-content/36373586#36373586</resource>
<resource>http://stackoverflow.com/a/1962757/12597</resource>
</additional>
</createdResource>
Ou, se você preferir:
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": [
"http://stackoverflow.com/questions/1860645/create-request-with-post-which-response-codes-200-or-201-and-content/36373586#36373586",
"http://stackoverflow.com/a/36373586/12597"
]
}
A resposta é inteiramente sua; é arbitrariamente o que você gostaria.
Compatível com cache
Finalmente, há a otimização de que eu posso pré-armazenar em cache o recurso criado (porque eu já tenho o conteúdo; acabei de carregá-lo). O servidor pode retornar uma data ou ETag que eu possa armazenar com o conteúdo que acabei de enviar:
Consulte a Seção 7.2 para obter uma discussão sobre o significado e a finalidade dos campos de cabeçalho do validador, como ETag e Last-Modified, em uma resposta 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="https://stackoverflow.com/a/36373586/12597">here</A> to view it.
E ETag
s são valores puramente arbitrários. Tê-los diferentes quando um recurso é alterado (e os caches precisam ser atualizados) é o que importa. O ETag é geralmente um hash (por exemplo, SHA2). Mas pode ser um banco de dados rowversion
ou um número de revisão incremental. Qualquer coisa que mudará quando a coisa mudar.