私はRESTfulアーキテクチャの信条をかなりよく理解していると思いますが、まだそこにはいません。
私が理解できない部分は、クライアントが各リソースで使用可能なHTTPメソッドをどのように認識できるかということです。プロセスを続行するためにアプリケーションフローで特定のアクションが必要な場合はどうでしょうか。
簡略化した例:
クライアントがRESTAPIに簡単な注文をしたと仮定します。
クライアントは、http://api.mycompany.com/ordersに投稿リクエストを行います。
ペイロードのリクエスト
<order>
<items>
<sku>12345</sku>
<quantity>1</quantity>
</items>
</order>
リクエストが成功したと仮定します
応答ペイロード
<order>
<id>156</id>
<status>Pending Payment</status>
<items>
<sku>12345</sku>
<quantity>1</quantity>
</items>
<links>
<link rel="order" url="http://api.mycompany.com/orders/156" />
<link rel="invoice" url="http://api.mycompany.com/payments/156" />
<link rel="payment" url="http://api.mycompany.com/invoices/156" />
</links>
</order>
ハイパーメディアの制約を正しく理解していれば、対応するリソースを提供し、クライアントはそこからどこに行くかを選択できます。
上記の例では、rel = "order"のリンクは、GET、PUT、またはDELETEリクエストである可能性があります。rel = "invoice"のリンクは、GETリクエストに制限されています。rel = "payment"のリンクは、 POSTリクエストのみを受け入れます。
クライアントはこれをどのように知っていますか?前述のリソースの1つにOPTIONSリクエストを送信すると、使用可能なメソッドが提供されるはずですが、それがこの種のシナリオを処理する標準的な方法であるかどうかはわかりません。
どんな助けでも大歓迎です。