ここに新しいものはありません私はちょうど明確化を得ようとしており、他の投稿には何も見当たりません。私は、restulfully新しいリソースを作成してい安心なPOST応答のための「ベスト」プラクティス
は言う:身体と
/books (POST)
:
{
title: 'The Lion, the Witch and the Wardrobe',
author: 'C. S. Lewis'
}
私は返すべきであることを知っている201新しいのLocationヘッダを(作成されます)リソース:
Location: /books/12345
私は自分自身で答えることができない質問は、サーバーが返すべきものです体の中にangularjsのようなフロントエンドフレームワークの
- 私が書かれているAPI:私はカップルの理由のためにこれを行っている
{ id: 12345, title: 'The Lion, the Witch and the Wardrobe', author: 'C. S. Lewis' }
:
は、私は多くの場合、この応答の種類を行っています。私の のケースでは、角度リソースを使用しています。私はしばしば、リソースのIDを見つけるのにちょうど が必要です。私が にIDを返さなかったなら、私はLocation ヘッダーからそれを解析する必要があります。
- すべての書籍のGETで私は通常 idだけでなくオブジェクト全体を返します。この意味で、私のクライアントコードは、 のどこからIDを取得するか(ロケーションヘッダーまたは本文)を区別する必要はありません。
ここで私は本当に灰色の領域にあることを知っていますが、ほとんどの人はリソース全体を返すことが「悪い」練習であると言います。しかし、サーバーがリソースに情報を変更/追加する場合はどうでしょうか。それは間違いなくIDを追加しますが、タイムスタンプのような他のものも追加するかもしれません。リソース全体を返さない場合は、POSTを実行してIDを返し、クライアントに新しいリソースを取得するGETを実行させるのが本当に良いですか?
私はこれが古いと知っていますが、あなたのPOST後にGETを使用するための説得力のある議論を与えることができます。 http/1.1の仕様では、履歴ツールはGETレスポンスから返されたキャッシュ設定を無視することができます。POSTで更新した後、ブラウザの戻るボタンを使用してこのページに戻ると、古い元のGETからキャッシュされたデータ。したがって、GETを再利用すると、キャッシュを更新して、ページがどのように残っていたかをよりよく把握できます。 – Shaded
@ Shaded APIがアプリでも使用されるように設計されている場合は、保持していません。通常、モデルタイプのオブジェクトをメモリに保持することによってデータをキャッシュします。これは通常、POST要求に対する応答で行われます。また、ブラウザに関しては、GET apiエンドポイントがある限り、POST要求に対する応答は本当に傷つくことはありません。 – Dschee