1

REST の理論的な問題で立ち往生しています。

シンプルな商品在庫 API を想像してみてください。productデータベースには、 、 、quantityおよび を参照するムーブメントのコレクションが 1 つ含まれていますstatus

前提条件が 1 つあります。それは、API ユーザーにステータスを操作させたくないということです。ステータス値はreservedまたはconfirmedです。

まず、商品の予約を作成したいと思います。これを表す対応する URL パスと HTTP メソッドを次に示します。

[POST] /products/{product-id}/reservations

これにより、ステータス付きのムーブメントがreserved作成され、作成されたムーブメントの ID が返されます。

ここで、この予約を確認します。

[POST] /reservations/{movement-id}/confirmations

意味的には、確認済みの予約を作成しているように思えます。実際には、ムーブメントのステータスを変更するだけです。

だから、2つの質問:

  1. 私の 2 番目の POST は冪等です。RFC で情報を見つけることができませんでしたが、POST は冪等にできますか?
  2. 確認を表すためのより良い方法が見つかりましたか?
4

1 に答える 1

1

代わりに PUT を使用します。例えばPUT /reservations/{movement-id}/status "confirmed"

ノート:

予約が確認された後にリンクを削除するため (HATEOAS)、POST がべき等であることは問題ではありません。そのため、同じ予約に対して 2 つの確認が到着する可能性は非常に低くなります。とにかく、PUTの方が適していると思います。

于 2015-11-03T15:04:32.307 に答える