したがって、ここでは何も新しいことはありません。説明を求めているだけで、他の投稿では何も見つけられないようです。
私は思い切って新しいリソースを作成しています:
/books (POST)
ボディ付き:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
新しいリソースのLocationヘッダーを含む201(Created)を返す必要があることはわかっています。
Location: /books/12345
自分では答えられないように思える質問は、サーバーが本文で返す必要があるものです。
私はよくこのタイプの応答をしました:
{
id: 12345,
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
これを行った理由はいくつかあります。
- 私はangularjsのようなフロントエンドフレームワーク用のAPIを書きました。私の特定のケースでは、角度リソースを使用しており、リソースを見つけるためにリソースのIDだけが必要になることがよくあります。応答本文でIDを返さなかった場合は、Locationヘッダーから解析する必要があります。
- すべての本のGETでは、通常、IDだけでなくオブジェクト全体を返します。この意味で、クライアントコードは、IDをどこから取得するか(場所のヘッダーまたは本文)を区別する必要はありません。
今、私は本当に灰色の領域にいることを知っていますが、ほとんどの人は、リソース全体を返すことは「悪い」習慣だと言っています。しかし、サーバーがリソースに情報を変更または追加した場合はどうなるでしょうか。それは間違いなくIDを追加しますが、タイムスタンプのような他のものも追加するかもしれません。リソース全体を返さない場合は、POSTを実行し、IDを返してから、クライアントにGETを実行して新しいリソースを取得させる方が良いでしょう。