Ý tưởng là cơ quan phản hồi cung cấp cho bạn một trang liên kết bạn với điều:
201 Tạo
Mã trạng thái 201 (Đã tạo) chỉ ra rằng yêu cầu đã được thực hiện và dẫn đến một hoặc nhiều tài nguyên mới được tạo. Tài nguyên chính được tạo bởi yêu cầu được xác định bởi trường tiêu đề Vị trí trong phản hồi hoặc nếu không nhận được trường Vị trí bằng URI yêu cầu hiệu quả.
Đây có nghĩa là bạn sẽ bao gồm một Location
trong những phản ứng tiêu đề cung cấp cho URL của nơi bạn có thể tìm ra mới được tạo điều :
HTTP/1.1 201 Created
Date: Sat, 02 Apr 2016 12:22:40 GMT
Location: http://stackoverflow.com/a/36373586/12597
Cơ quan phản hồi
Sau đó, họ tiếp tục đề cập đến những gì bạn nên đưa vào phản ứng cơ thể :
Tải trọng phản hồi 201 thường mô tả và liên kết đến (các) tài nguyên được tạo.
Đối với người sử dụng trình duyệt, bạn cung cấp cho họ thứ gì đó để họ có thể xem và nhấp vào, để truy cập tài nguyên mới được tạo của họ:
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.
Nếu trang chỉ được sử dụng bởi rô-bốt, thì điều hợp lý là máy tính có thể đọc được phản hồi:
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>
Hoặc, nếu bạn thích:
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"
]
}
Câu trả lời là hoàn toàn tùy thuộc vào bạn; đó là tùy ý những gì bạn muốn.
Thân thiện với bộ nhớ cache
Cuối cùng, có sự tối ưu hóa mà tôi có thể lưu vào bộ nhớ cache trước tài nguyên đã tạo (vì tôi đã có nội dung; tôi vừa tải nó lên). Máy chủ có thể trả về ngày tháng hoặc ETag mà tôi có thể lưu trữ cùng với nội dung tôi vừa tải lên:
Xem Phần 7.2 để thảo luận về ý nghĩa và mục đích của các trường tiêu đề trình xác thực, chẳng hạn như ETag và Last-Modified, trong phản hồi 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.
Và ETag
s hoàn toàn là các giá trị tùy ý. Làm cho chúng khác nhau khi tài nguyên thay đổi (và bộ nhớ đệm cần được cập nhật) là tất cả những gì quan trọng. ETag thường là một hàm băm (ví dụ: SHA2). Nhưng nó có thể là một cơ sở dữ liệu rowversion
hoặc một số sửa đổi tăng dần. Bất cứ điều gì sẽ thay đổi khi sự vật thay đổi.