web-dev-qa-db-ja.com

情報を検証するためのREST操作(GET、PUT、またはPOST))はどれですか?

私のユーザーは、iOSアプリにいくつかの情報フィールドを入力します。この情報は、RESTfulAPIを備えたサーバーで検証する必要があります。検証後、iOSアプリのUIが変更され、結果が示されます。

GET、PUT、またはPOSTのいずれも適切ではないようです。これは、リソースを取得しておらず、リソースが作成または更新されていないためです。

この検証を実装するための最適なREST操作は何ですか?

24
meaning-matters

私のユーザーが入力しますいくつか情報フィールド iOSアプリで。この情報は、RESTfulAPIを備えたサーバーで検証する必要があります。検証後、iOSアプリのUIが変更され、結果が示されます。リソースを取得できません。また、リソースも作成または更新されません。

何も保存していない(リソースを変更していない)ので、これは技術的にはRESTfulよりもRPCの方が多いと思います。

以下は私の意見ですので、福音として受け取らないでください。

情報が単に送信されている場合そしてあなたが「はい」または「いいえ」と言っている場合そしてあなたはそれを保存していない、私はPOSTが大丈夫だと思います..

情報が実際に保存/更新されている場合の場合、適切なHTTPメソッドを選択する方がはるかに適切です。

POST = CREATE / SUBMIT (in an RPC context)
PUT = UPDATE (or CREATE if there is nothing to UPDATE)
6
Kristian

私はあなたと同じシナリオを使用し、それにPUTを使用します。 「同じリクエストを2回送信すると、サーバー上で異なる状態になりますか?」と自問する必要があります。はいの場合はPOSTを使用し、いいえの場合はPUTを使用します。

7
Lukas K

ValidationResourceと2つのリクエストを使用することをお勧めします。このリソースの各インスタンスは、一連のデータの検証を表します。ワークフロー:

1。新しいValidationResourceを作成します

  • リクエスト:POST /path/to/validations
    • 本体として検証するデータ
  • 応答:201 Created
    • Location: /path/to/validations/<unique-id-of-this-validation>

2。検索結果

  • リクエスト:GET /path/to/validations/<unique-id-of-this-validation>
  • 応答:200 OK
    • 体: {'valid': true}または{'valid': false}

これは、検証がサーバー状態のリソースであるRESTfulアプローチです。

4
user1907906