私は次のステートマシンを持っていて、これが欲しいです:
- 新しい注文を作成する
- アイテムを追加します(リストはオプションです)
- 終了を呼び出して注文を確認します
- それを支払う
- それを送る
そして、このフローはREST Webサービスを介して制御されており、どちらの方法がRESTの原則によく準拠しているかはわかりません。
私は2つの可能性を思いつきました(下の数字は上の数字に対応しています):
最初のもの-操作はパスによって指定されます
1.
POST /create HTTP/1.1
2.
POST /addItem HTTP/1.1
<data>
<itemId>123</itemId>
</data>
GET /listItems HTTP/1.1
3.
POST /finish HTTP/1.1
4.
POST /pay HTTP/1.1
<data>
<price>123</price>
</data>
5.
POST /send HTTP/1.1
2番目のもの-操作は本文で指定されます
1.
POST / HTTP/1.1
<data>
<operation>create.new.order</operation>
</data>
- returns resId
2.
PUT /{resId} HTTP/1.1
<data>
<itemId>123</itemId>
</data>
GET /items HTTP/1.1
3.
PUT /{resId} HTTP/1.1
<data>
<operation>finish.order</operation>
</data>
4.
PUT /{resId} HTTP/1.1
<data>
<price>123</price>
<operation>pay.order</operation>
</data>
5.
PUT /{resId} HTTP/1.1
<data>
<operation>send.order</operation>
</data>
2番目の解決策の方が良いようですが、リクエストの本文で操作を指定できるかどうかわかりません-大丈夫ですか?
また、リソースを実際に更新するのではなく、ステートマシンの状態を変更するだけなので、2番目のソリューションで使用するPUT
か、それとも使用するかがわかりません。POST
3
5
これらのどれも正しくない場合、どうすればよいですか?