แนวคิดก็คือเนื้อหาตอบกลับจะแสดงหน้าเว็บที่เชื่อมโยงคุณไปยังสิ่งนั้น:
201 สร้าง
รหัสสถานะ 201 (สร้างแล้ว) ระบุว่าคำขอได้รับการตอบสนองและส่งผลให้มีการสร้างทรัพยากรใหม่อย่างน้อยหนึ่งรายการ ทรัพยากรหลักที่สร้างขึ้นโดยการร้องขอถูกระบุโดยฟิลด์ส่วนหัวตำแหน่งในการตอบกลับหรือหากไม่ได้รับฟิลด์ตำแหน่งโดย URI คำขอที่มีประสิทธิภาพ
ซึ่งหมายความว่าคุณจะรวมถึงLocation
ในการตอบสนองส่วนหัวที่ให้ URL ของที่คุณสามารถหาที่สร้างขึ้นใหม่สิ่งที่ :
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
ร่างกายตอบสนอง
จากนั้นพวกเขาจะกล่าวถึงสิ่งที่คุณควรรวมไว้ในเนื้อหาตอบสนอง:
โดยทั่วไปส่วนข้อมูลการตอบสนอง 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="https://stackoverflow.com/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>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>
หรือหากคุณต้องการ:
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"
]
}
คำตอบขึ้นอยู่กับคุณทั้งหมด เป็นสิ่งที่คุณต้องการโดยพลการ
แคชเป็นมิตร
ในที่สุดก็มีการเพิ่มประสิทธิภาพที่ฉันสามารถแคชทรัพยากรที่สร้างไว้ล่วงหน้าได้ (เนื่องจากฉันมีเนื้อหาอยู่แล้วฉันเพิ่งอัปโหลด) เซิร์ฟเวอร์สามารถส่งคืนวันที่หรือ ETag ซึ่งฉันสามารถจัดเก็บพร้อมกับเนื้อหาที่ฉันเพิ่งอัปโหลด:
ดูหัวข้อ 7.2สำหรับการอภิปรายเกี่ยวกับความหมายและวัตถุประสงค์ของฟิลด์ส่วนหัวของ validator เช่น 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="https://stackoverflow.com/a/36373586/12597">here</A> to view it.
และETag
s เป็นค่าโดยพลการล้วนๆ การทำให้ทรัพยากรแตกต่างกันเมื่อทรัพยากรมีการเปลี่ยนแปลง (และจำเป็นต้องอัปเดตแคช) เป็นเรื่องสำคัญ ETag มักจะเป็นแฮช (เช่น SHA2) แต่อาจเป็นฐานข้อมูลrowversion
หรือหมายเลขการแก้ไขที่เพิ่มขึ้น อะไรก็ตามที่จะเปลี่ยนไปเมื่อสิ่งนั้นเปลี่ยนไป