[解決済み] restfulなPOSTレスポンスのための「ベスト」プラクティス
質問
私はただ、他の投稿で見つけることができないいくつかの明確化を取得しようとしています。
私は安直に新しいリソースを作成しています。
/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を返さなければ レスポンスボディから解析する必要があります。 ヘッダを表示します。
- すべての本のGETでは、私は通常、オブジェクト全体を返します。 を指定します。 この意味で、私のクライアントコードは、以下を区別する必要がありません。 をどこから取得するか(ロケーションヘッダまたはボディ)を決定します。
今、私は本当にグレーゾーンにいることを知っています。しかし、ほとんどの人は、リソース全体を返すことは「悪い」習慣だと言っているのです。 しかし、もしサーバーがリソースに情報を追加したり変更したりしたらどうでしょう。 それは間違いなくidを追加しますが、タイムスタンプのような他のものも追加するかもしれません。 リソース全体を返さない場合、POSTを実行してidを返し、クライアントにGETを実行して新しいリソースを取得させる方が本当に良いのでしょうか?
解決方法は?
更新時にオブジェクト全体を返すことはあまり意味がないように思えますが、通常のユースケースにおいて、作成時にオブジェクト全体を返すことがなぜ悪い習慣であるのか、私にはほとんどわかりません。少なくとも、IDを簡単に取得したり、関連する場合はタイムスタンプを取得したりするのに便利でしょう。 これは実際にRailsでscaffoldしたときに得られるデフォルトの動作です。
IDだけを返して、最初のPOSTで取得できたはずのデータを取得するために、後でGETリクエストを行うことに何の利点も見いだせないのです。
とにかくAPIに一貫性があれば、ニーズに合ったパターンを選べばいいと思うんです。REST APIをどのように構築するか、正しい方法というのはないと思います。
関連
-
[解決済み] Apache Marathon REST APIを使用してDockerインスタンスをスケールアップする方法。
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] リソースが既に存在する場合の POST に対する HTTP レスポンスコード
-
[解決済み] RESTを理解する。動詞、エラーコード、認証
-
[解決済み] RESTのネストされたリソースのベストプラクティスは何ですか?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み】RESTful 認証
-
[解決済み】REST APIの命名規則ガイドラインはありますか?[クローズド]
-
[解決済み] レスポンスコードが200または201で、内容がPOSTのリクエストを作成します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] postmanでAPIからエクセルファイル(.xls)をダウンロードする方法は?
-
[解決済み] Apache Marathon REST APIを使用してDockerインスタンスをスケールアップする方法。
-
[解決済み] RESTfulとRESTlessの違いについて
-
[解決済み] RESTとAPIの違いは何ですか?
-
[解決済み】有効なリクエストでありながら、データが空の場合の適切なRESTレスポンスコードは何ですか?
-
[解決済み】RESTful APIで多対多の関係を処理するにはどうすればよいですか?
-
[解決済み】API paginationのベストプラクティス
-
[解決済み] restfulなPOSTレスポンスのための「ベスト」プラクティス
-
[解決済み】REST APIの命名規則ガイドラインはありますか?[クローズド]
-
[解決済み】Node.js内でリモートRESTコールを行うには? CURLは?