アイデアは、レスポンスボディがあなたに事にリンクするページを与えるということです:
201作成されました
201(作成済み)ステータスコードは、要求が満たされ、1つ以上の新しいリソースが作成されたことを示します。リクエストによって作成されたプライマリリソースは、レスポンスのLocationヘッダーフィールドによって識別されます。Locationフィールドが受信されない場合は、有効なリクエストURIによって識別されます。
これは、新しく作成されたものを見つけることができる場所のURLをLocation
示す応答ヘッダーにを含めることを意味します。
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を返すことができます。
201応答のETagやLast-Modifiedなどのバリデーターヘッダーフィールドの意味と目的については、セクション7.2を参照してください。
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
またはインクリメントするリビジョン番号の場合もあります。物事が変化したときに変化するもの。