Die Idee ist, dass der Antworttext Ihnen eine Seite gibt, die Sie mit der Sache verknüpft:
201 Erstellt
Der Statuscode 201 (Erstellt) zeigt an, dass die Anforderung erfüllt wurde und eine oder mehrere neue Ressourcen erstellt wurden. Die durch die Anforderung erstellte primäre Ressource wird entweder durch ein Standortheaderfeld in der Antwort oder, falls kein Standortfeld empfangen wird, durch den effektiven Anforderungs-URI identifiziert.
Dies bedeutet, dass Sie ein Location
in den Antwortheader aufnehmen würden , das die URL angibt, unter der Sie das neu erstellte Objekt finden können :
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Antwortkörper
Sie gehen dann zu erwähnen , was Sie in der Antwort enthalten sollte Körper :
Die 201-Antwortnutzdaten beschreiben und verknüpfen normalerweise die erstellten Ressourcen.
Für den Menschen, der den Browser verwendet, geben Sie ihm etwas, das er anzeigen und anklicken kann, um zu seiner neu erstellten Ressource zu gelangen:
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.
Wenn die Seite nur von einem Roboter verwendet wird, ist es sinnvoll, dass die Antwort computerlesbar ist:
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>
Oder wenn Sie es vorziehen:
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"
]
}
Die Antwort liegt ganz bei Ihnen; Es ist willkürlich, was Sie möchten.
Cache freundlich
Schließlich gibt es die Optimierung, dass ich die erstellte Ressource vorab zwischenspeichern kann (weil ich den Inhalt bereits habe; ich habe ihn gerade hochgeladen). Der Server kann ein Datum oder ein ETag zurückgeben, das ich mit dem gerade hochgeladenen Inhalt speichern kann:
In Abschnitt 7.2 finden Sie eine Erläuterung der Bedeutung und des Zwecks von Validator-Header-Feldern wie ETag und Last-Modified in einer 201-Antwort.
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.
Und ETag
s sind rein willkürliche Werte. Es kommt nur darauf an, dass sie unterschiedlich sind, wenn sich eine Ressource ändert (und die Caches aktualisiert werden müssen). Das ETag ist normalerweise ein Hash (z. B. SHA2). Es kann sich jedoch um eine Datenbank rowversion
oder eine inkrementelle Versionsnummer handeln. Alles , was wird ändern , wenn die Sache ändert.