[解決済み] RESTでは、POSTとPUTのどちらがupsert操作に最適ですか?
質問
サーバにクライアント用のKey-Valueストレージを保持しています。ユーザーがキーquot;k1"を送信した場合、私はそれをデータベースにupsertします。これは
POST
それとも
PUT
?
また、既存のキーをすべて削除し、新しいキーを追加する別の操作があります。これは
POST
それとも
PUT
は、レコードを消去して新しいレコードを追加するからです。
どのように解決するのですか?
ユーザーがキーを送信した場合 "k1" 私はデータベースにそれをupsert。これは、POSTまたはPUTと見なされます。
によると HTTP 仕様 :
PUT メソッドは、指定された Request-URI の下に同封のエンティティを格納するよう要求します。Request-URIが既に存在するリソースを参照している場合、同封のエンティティはオリジンサーバーに存在するものの修正版とみなされるべきです(SHOULD)。Request-URIが既存のリソースを指しておらず、そのURIがリクエストするユーザーエージェントによって新しいリソースとして定義可能な場合、オリジンサーバーはそのURIでリソースを作成することができる。
したがって、両方のケースでURIが事前に知られている場合、挿入または更新のためのPUTの使用は完全に正当であると私は思います。URIの一部としてキーを使用している場合 (たとえば http://www.somewhere.com/resources/k1 のk1のように)キーをURIの一部として使用している場合は、このようになるはずです。しかし、理想的なRESTfulであるためには、同じURLへのGETでリソースをダウンロードすることもできるようにする必要があります。
また、既存のキーをすべて削除して新しいキーを追加する別の操作がありますが、これはレコードをクリアして新しいものを追加するため、POST または PUT ですか。
この操作は2つのことを行っているため、RESTfulとはみなされないと思います。データへの単純なアクセスではなく、特定のクライアントのニーズを満たすためにマクロを提供しているように見えます。標準的な RESTful な設計は次のとおりです。
- 親 URL に GET を送信してキーのリストを取得する。上記の例では、次のようになります。 http://www.somewhere.com/resources ;
- にDELETEを送信して、それらのキーをそれぞれ削除する。 http://www.somewhere.com/resources/k1 ;
- へのPUT送信による置換の追加 http://www.somewhere.com/resources/k2 .
あまり明確ではありませんが、すべてのリソースを削除するには、1つのDELETEリクエストを http://www.somewhere.com/resources .
関連
-
[解決済み] リソースが既に存在する場合の POST に対する HTTP レスポンスコード
-
[解決済み] POSTとPUT HTTP REQUESTの違いは何ですか?
-
[解決済み] RESTアプリケーションはステートレスであることが前提である場合、セッションはどのように管理するのですか?
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み] RESTfulな「PUT」操作は何かを返すべき...。
-
[解決済み] cURLを使ってCookieを送信するには?
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み] restfulなPOSTレスポンスのための「ベスト」プラクティス
-
[解決済み】REST API - ファイル(画像)処理 - ベストプラクティス
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] URLクエリパラメータを含むHTTP POST -- 良いアイデアかどうか?
-
[解決済み] RESTのネストされたリソースのベストプラクティスは何ですか?
-
[解決済み] REST Web アプリケーションのページネーション
-
[解決済み] オブジェクト内のアイテムの合計数を返すための最良のRESTfulメソッドは何ですか?
-
[解決済み] RESTfulな方法でリソースのサーバーサイドメソッドを呼び出す
-
[解決済み] REST - ボディにIDを入れるかどうか?
-
[解決済み] RESTful - DELETE レスポンスボディに含まれるべき内容
-
[解決済み] ストリーミングリソースは、RESTfulパラダイムにどのように適合するか?
-
[解決済み] PathParamと@QueryParamの違いは何ですか?
-
[解決済み] RESTfulサービス - WSDLに相当するもの