ショッピングカートアプリケーションでは、購入可能な製品の場合は/product/
、ショッピングカートの場合は/cartitem/
というエンドポイントのエンドポイントがあるとします。 GET/cartitem/561つのRESTリソースを使用して別の製品を作成する
{
"quantity": 4
"sku": "12345"
"name":"mars bar"
}
のGET /product/2 response
{
"sku": "12345"
"name":"mars bar"
}
例の一例cartitemを追加する場合、私は/ cartitemに/代わりに体全体を通過することのPOSTを行います、私は、製品への参照を投稿することができたいと思い
POST /cartitem
BODY:
代わりにやってたの0:
POST /cartitem/
{
"quantity": 4
"sku": "12345"
"name":"mars bar"
}
注意を、私は持っていたいことはありません:cartitemを追加する方法に複数存在するため
GET
{
"quantity": "4"
"product":"/product/2"
}
理由があり、時にはあなたが持っています製品、時にはあなたが欲しい。私は、レスポンスが製品のURIを参照する必要がないようにしたいが、POSTを参照してクライアントのために簡単にすることを許可したい。
大丈夫ですか?
ありがとうございました
最高の方法は、製品のIDをフルリンクではなく送信することです。明日あなたがあなたのURLを変更すると想像して、それは '製品'となり、すべてのカートは無効になるでしょう。 数量とIDを保存する – sheplu
サンプルがRESTfulではないので、好きですか? RESTは、ある種の推奨事項/制約に従って、サーバーAPIからクライアントを切り離すことを目指しています。そのような堅牢性を変更する必要がない場合は、独自のアプローチを使用してください。ただし、RESTとは呼ばないでください。 –
@RomanVottnerしかし、RESTのどの部分が違反されていますか?導入されたステートフルなものはありません。博士論文によると、「RESTはリソースの識別、表現によるリソースの操作、自己記述的なメッセージ、アプリケーション状態のエンジンとしてのハイパーメディアという4つのインタフェースの制約によって定義されます。そこで違反している。 –