オブジェクトを作成するRESTfulな方法は何ですか? /resources/URIでPOSTを使用し、レスポンスで新しく作成したリソースにURIを返すか、/ resources/id/URIでPUTを使用する必要がありますか? /resources/id /のGETリクエストは確実に404を返しますが、PUTも404を返しますか? 新しいオブジェクトの作成には両方の方法を使用する必要がありますか?新しいオブジェクトを作成するために、/ resources /または/ resources /のPUTリクエストでPOSTリクエストを使用する必要がありますか?
4
A
答えて
8
一般に、クライアント(したがってユーザ)がURIを定義するかどうかによって、どちらかまたは両方を使用します。クライアントがresources/
にPOSTすると、サーバーはリソースのURIを判別します。クライアントがresources/{id}/
にPUTする場合、クライアントはリソースのURIを決定しています。
ただし、リンク、状態、およびリソースの一部と見なされない他のアイテムが作成されている場合は例外です。これらの余分な「コンストラクタargs」は、一般的にPUTできません。リソース状態。代わりに、その場合はPOSTする必要があります。
作成のためにPOSTを使用しても、更新のためにPUTを公開したいことがあります。それはリソースに依存します。
PUTでyesを作成できない場合は、その状況で404を返す必要があります。
関連する問題
- 1. AWS S3:ファイルをアップロードするためにPOSTリクエストまたはPUTリクエストを使用する必要がありますか?
- 2. 外部APIのJSONファイルへのPUTリクエストを作成する必要があります。特定のフィールドを更新する必要があります
- 3. 作成または更新可能なAPI呼び出しにPOSTまたはPUTを使用する必要があります
- 4. ロボットフレームワークからPOSTリクエストを行う必要があります
- 5. postAjaxリクエストのパラメータをエンコードするためにencodeURIComponentを使用する必要がありますか?
- 6. HTTPエラー:HTTPエラー400:不正なリクエスト(HTTPリクエストを作成するためにurllib2を使用する必要があります)
- 7. エクスプレスルータのルートハンドラでPUTリクエストをPOSTリクエストにリダイレクトする方法は?
- 8. httpsリクエストまたはajaxを使用してクライアントにデータを送信する必要がありますか?
- 9. リクエストごとに新しいCloud Spanner Clientインスタンスを作成する必要がありますか?
- 10. いつRESTサービスのPOSTリクエストでJSON本体を使用する必要がありますか?
- 11. なぜPostgreSQLを使い始めたら新しいユーザーを作成する必要がありますか?
- 12. Okhttpでオブジェクトを渡してPOSTリクエストを作成するには?
- 13. laravelリクエスト/応答にpsr-7を使用する必要がありますか?
- 14. プログラムでHTTP(GETまたはPOST)リクエストを作成できます
- 15. Alamofireリクエスト後にUIを更新するためにDispatchQueue.mainが必要ですか?
- 16. RESTテンプレートを使用してJSONファイルでPUTリクエストを作成する方法
- 17. Ruby on RailsでPUTリクエストを作成していますか?
- 18. POSTリクエストでデータベースに新しいレコードを作成できませんでした
- 19. 更新後のLaravelリダイレクトはPUTリクエストを使用します
- 20. angular2/postユーザーを作成するためのdjangoへのリクエスト
- 21. 新しいリクエストがあった場合にリクエストをキャンセルする
- 22. netBeansで作成したresourcesフォルダが表示されません
- 23. WebAPI PUT/POSTリクエストでCORSを有効にしますか?
- 24. ajaxリクエストを制限する必要がありますか?
- 25. EC2のRDS(Mysql)データベースがすでにあります。弾力のあるBeanstalkのために新しいデータベースを作成する必要がありますか?
- 26. 作成されたJavaオブジェクトは、アクセスのためにネイティブに同期する必要がありますか?
- 27. 3つのSQLリクエストを1つにまとめる必要があります
- 28. Mongooseコントローラをクラスまたはオブジェクトにする必要がありますか?
- 29. Web APIのバイナリデータをPOSTまたはPUT RESTリクエストから処理する
- 30. Androidサービスは、他のクラスからのリクエストのためにデータを保持する必要があります
私は混乱しています。なぜPUTを更新する必要がありますか? PUTを使用してリソース全体を更新する必要があります。すべてのリソースを再度保存するのは不便です(データが大量になる可能性があります)。リソース/ {id}/{field}には意味があるかもしれませんが、POSTには何がありますか?私は、POSTの更新とPUTの置き換え(そのため、リソースが空の場合は、それが作成される)ということを知っています。 –
はい、PUTを使用して更新するには、リソース全体が必要です。非効率的なように見えるかもしれませんが、RESTアーキテクチャー・スタイルを使用して構築されたアプリケーションを大規模なデプロイメントに拡張するための重要な要素です。リソースのサイズのバランスを取るか、代わりにPATCHメソッドを使用する必要があります。 PUTは置き換えられます。これは規約にとどまらず、規約に従います。 POSTは「他のすべて」を行い、頻繁に更新に使用されます。 – fumanchu
POSTを使ってリソースを更新できるのであれば、私はまだPUTを許可するべきではありません。 –