web-dev-qa-db-ja.com

操作のバッチはREST原則に違反していますか?

REST REST APIの原則)に違反していませんか?POSTを介してキューに追加できる操作のバッチ(おそらくトランザクション保証)をサポートしていますか?

このデザインはRESTアーキテクチャの範囲外と思われますが、必ずしもそれに違反しているわけではありませんが、ここで信頼できる情報源を探しています。 。

たとえば、Parse APIはPOSTを作成して、リクエストの batch を作成します。それぞれが個別のRESTリクエストを表すことができます、次のような(引用):

curl -X POST \
  -H "X-Parse-Application-Id: ${APPLICATION_ID}" \
  -H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
        "requests": [
          {
            "method": "PUT",
            "path": "/1/classes/GameScore/Ed1nuqPvcm",
            "body": {
              "score": 999999
            }
          },
          {
            "method": "DELETE",
            "path": "/1/classes/GameScore/Cpl9lrueY5"
          }
        ]
      }' \
  https://api.parse.com/1/batch
7
Will

私が読んだことから、これはRESTに違反していません。 RESTは、クライアントとサーバーが相互に通信する方法に関係しています。これはcommunicationはステートレスである必要があります。つまり、クライアントがサーバーを呼び出し、サーバーが応答します、それだけですが、stateが関与していないことを意味するわけではありません。RESTは、リソースに対処することもでき、リソースには状態があります。

私が読んだ1つの例(およびリンクできるようにどこにあるかを覚えておきたい)はトランザクションに関するものでした。POSTを実行してトランザクションリソースを作成し、次に一連のPUTを実行して変更する/そのトランザクションを更新し、最後にコミット(このHTTP動詞のマッピング先を忘れた)してトランザクションを送信します。これらの通信はすべてRESTfulでした(通信チャネルの状態はありませんでした)が、トランザクションリソース内またはトランザクションリソースとしての状態が残っています。

処理キューenバッチに物事を追加すると、トランザクションの例に似ているように思えます。

私はあまりやっていないRESTものですが、これは私には問題ないようです。


利害関係者向けのいくらか関連する読み物

4
paul