クライアント用にサーバーにキーと値のストレージを保持します。ユーザーがキー「k1」を送信すると、それをデータベースにアップサートします。これは考慮されていますPOST
かPUT
?
また、既存のすべてのキーを削除して新しいキーを追加する別の操作があります。これは、レコードをクリアして新しいレコードを追加するためですかPOST
。PUT
アップサート操作の背後にある考え方は、クライアントがデータ構造に関する情報を持っている/決定し、キー値を含むデータを送信するということです。そのため、upsert 操作のリクエスト モデルは、以下の例のようにキーが含まれている update 操作と非常によく似ています。
/customers/jimmy
既存のレコードを更新するために期待されるメソッドは PUT です。したがって、選択は PUT にする必要があります。
POST は通常、以下の例のように、まったく新しいコンテンツを含む新しいレコードを挿入するために使用されます。
POST /customers HTTP/1.1
Content-Type: ...
Content-Length: ...
Host: server.yourdomain.com
Accept: ...
User-Agent: ...
id jimmy
name jimmy
Occupation Stackoverflower
したがって、あなたの場合、アップサート操作の PUT もそれをカバーするため、POST 操作は必要ありません。
ここで、アップサートに関する重要な問題は、アップサート操作についてクライアントをどの程度信頼できるかということです。クライアントが既存のキーで新しいレコードを挿入したい場合はどうなりますか? あなたの場合、挿入リクエストと更新リクエストの両方が同じAPIに送信され、既存のレコードがあるため、このリクエストを更新として処理する必要があります。これは、デザインに関してあなたの側で答える質問です。
すべてを混ぜ合わせると、REST を行っていない可能性があります。RESTful Web サービス から: 基本POST
とPUT
明確な使用シナリオがあります:
To create a resource on the server, use POST. To retrieve a resource, use GET. To change the state of a resource or to update it, use PUT. To remove or delete a resource, use DELETE.
POST
そのため、新しいチケットをブログに投稿しPUT
、既存の値を変更することを検討してください。
DELETE
削除は、動詞とは異なる操作として行う必要があります。更新前に「すべて削除」するのは良い考えではないようです。