アイデアは、応答本文が、モノにリンクするページを提供するということです。
201 作成済み
( 201
Created) ステータス コードは、要求が満たされ、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="/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を参照してください。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="/a/36373586/12597">here</A> to view it.
そしてETag
s は純粋に任意の値です。リソースが変更されたとき (およびキャッシュを更新する必要があるとき) にそれらを異なるものにすることが重要です。通常はETag
ハッシュです (例: SHA2-256)。ただし、データベースrowversion
、または増分リビジョン番号の場合があります。物事が変わると変わるもの。