2016-07-18 8 views
0

私は注文と支払いトランザクションを表すRESTful APIを設計しています。私の(簡略化された)モデルは次のようになります:REST APIで関連データをどのようにリンクする必要がありますか?

---------  --------------- 
| order |----<| transaction | 
---------  --------------- 

つまり、注文は多くのトランザクションを持つことができます。私は、リソースを取得するために、これらのエンドポイントがある場合:

/orders/{id} 
/orders/{id}/transactions 

2回目の呼び出しは:)

/transactions/{id} 

を経由して、トランザクションオブジェクト(拡大またはアクセスすることができるだけでIDのリストを返します。次に、どのように私はすべき注文取引を説明するために注文リソースを更新しますか?

トランザクションオブジェクトデータのリストを/orders/{id}/transactionsにPOSTする必要があります。これらは作成され、注文リソースにリンクされますか?

または、トランザクションごとに/transactionsにPOSTしてから、PUT(またはPOST?)を/orders/{id}/transactionsにしてください。

...または別のものはありますか?

すでにトランザクションリソースがあり、リンクしたい場合はどうなりますか?

答えて

3

あなたは次のように、順序のためのトランザクションを作成するためにPOSTを使用することができます。

POST /orders/{id}/transactions HTTP/1.1 
Host: example.org 
Content-Type: application/json 

{ 
    ... transaction representation ... 
} 

あなたはトランザクションリソースを検討する可能性がために、既存のトランザクションをリンクするには、サブリソースは順序と呼ばれる含まれてい

PATCH /transactions/{id} HTTP/1.1 
Host: example.org 
Content-Type: application/json-patch+json 

[ 
    { "op": "replace", "path": "/order", "value": 100 } 
] 
:あなたは、一部のトランザクションリソースを更新するために PATCHJSON Patchを使用することができ、また

PUT /transactions/{id}/order HTTP/1.1 
Host: example.org 
Content-Type: application/json 

{ 
    "order": 100 
} 

:トランザクションの順序、あなたが要求ペイロードの順序識別子を送信し、PUTを使用するを交換するには

関連する問題