Buradaki fikir, yanıt gövdesinin sizi şeye bağlayan bir sayfa vermesidir:
201 Oluşturuldu
201 (Oluşturuldu) durum kodu, isteğin yerine getirildiğini ve bir veya daha fazla yeni kaynağın oluşturulmasına neden olduğunu gösterir. İstek tarafından oluşturulan birincil kaynak, yanıttaki bir Konum başlığı alanıyla veya herhangi bir Konum alanı alınmadıysa etkin istek URI'si tarafından tanımlanır.
Bu , yeni oluşturulan şeyi bulabileceğiniz URL'yi veren Location
yanıt başlığına bir ekleyeceğiniz anlamına gelir :
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Yanıt gövdesi
Daha sonra yanıt gövdesine neleri dahil etmeniz gerektiğini belirtmeye devam ederler :
201 yanıt yükü tipik olarak, oluşturulan kaynakları tanımlar ve bunlara bağlanır.
Tarayıcıyı kullanan insan için, onlara bakabilecekleri bir şey verirsiniz ve yeni oluşturdukları kaynaklara ulaşmak için tıklayabilirsiniz:
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.
Sayfa yalnızca bir robot tarafından kullanılacaksa, yanıtın bilgisayarda okunabilir olması mantıklıdır:
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>
Veya tercih ederseniz:
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"
]
}
Cevap tamamen size bağlıdır; keyfi olarak istediğiniz şey bu.
Önbellek dostu
Son olarak, oluşturulan kaynağı önceden önbelleğe alabileceğim optimizasyon var (çünkü içeriğe zaten sahibim; yeni yükledim). Sunucu, yeni yüklediğim içerikle saklayabileceğim bir tarih veya ETag döndürebilir:
201 yanıtında ETag ve Last-Modified gibi doğrulayıcı başlık alanlarının anlamı ve amacına ilişkin bir tartışma için Bölüm 7.2'ye bakın .
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.
Ve ETag
s tamamen keyfi değerlerdir. Önemli olan tek şey, bir kaynak değiştiğinde (ve önbelleklerin güncellenmesi gerektiğinde) farklı olmalarıdır. ETag genellikle bir karmadır (ör. SHA2). Ancak bir veritabanı rowversion
veya artan bir revizyon numarası olabilir. Olacak şey değiştirmek zaman şey değişir.