@Cormac Mulhallの答えは非常に良いですが、同僚から聞いた改良点を提案したいと思います:
リソースに発生するアクションまたはイベントは、アクション動詞またはイベント名の動名詞形式を使用して従属ドメイン名詞として扱うことができますが、「アクション」や「イベント」などの意味のあるパス識別子の下に配置する必要があります。 . 返されるリソース表現は、アクションに関する状態データを表現するため、POST
またはPUT
はリクエストとして動作します。
注文に複数のライフサイクル状態があるとします。下書きが作成された後のある時点で、注文が発注、履行、またはキャンセルされます。
これらの注文アクションに関する情報は、リソース パスの下にアクション名を複数名詞形式で配置し/actions
、アクションの状態がアクティブである場合に詳細を返すか、または404 NOT FOUND
そうでない場合に見つけることができます。
https://order.api.foobar.com/v1.0/orders/{orderId}/actions/placements
https://order.api.foobar.com/v1.0/orders/{orderId}/actions/fulfillments
https://order.api.foobar.com/v1.0/orders/{orderId}/actions/cancellations
これらのアクションが冪等である場合 (注文を続けて 2 回行うことはできません)、これらのアクションはPUT
、これらの URI に適切な表現を 'ing することによって要求できます。冪等でない場合はPOST
、複数形に 'ing することで作成されます。
たとえば、承認順序を追跡するには、次のことができPOST
ます。
https://order.api.foobar.com/v1.0/orders/{orderId}/approvals
次に、以下に対して GET を実行して、個々の承認に関する情報を確認します。
https://order.api.foobar.com/v1.0/orders/{orderId}/approval/1
すべてのアクションを見つけるには、「アクション」などと呼ばれる集約を使用すると便利なことがよくあります。
https://order.api.foobar.com/v1.0/orders/{orderId}/actions
これを行うことができPOST
、表現にどのタイプのアクションが意味されているかを宣言させます。
{orderId}
パラメータをオフのままにすることで、個々の注文のアクションのリストを取得することもできます。
https://order.api.foobar.com/v1.0/orders/actions/placements
https://order.api.foobar.com/v1.0/orders/actions
これらは、クエリ パラメータを追加することで検索できます。
https://order.api.foobar.com/v1.0/orders/actions/placements?since={sinceTimestamp}