したがって、ここで新しいことは何もありません。明確化しようとしているだけで、他の投稿では何も見つからないようです。
私は新しいリソースを作成しています。
/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 を作成しました。私の特定のケースでは、Angular リソースを使用しており、リソースを見つけるためにリソースの ID だけが必要になることがよくあります。応答本文で ID を返さなかった場合は、Location ヘッダーからそれを解析する必要があります。
- すべての本の GET では、通常、ID だけでなくオブジェクト全体を返します。この意味で、私のクライアント コードは、ID を取得する場所 (場所のヘッダーまたは本文) を区別する必要はありません。
今、私はここで本当に灰色の領域にいることを知っていますが、ほとんどの人は、リソース全体を返すことは「悪い」習慣だと言っています. しかし、サーバーがリソースの情報を変更/追加した場合はどうなるでしょうか。それは間違いなくIDを追加しますが、タイムスタンプなどの他のものも追加する可能性があります. リソース全体を返さない場合は、POST を実行して ID を返し、クライアントに GET を実行させて新しいリソースを取得する方が本当に良いでしょうか。