6

「ショッピング カート」機能を備えたオンライン ストアがあり、RESTful な方法で「空のカート」リンクを実装したいとします。

簡単にするために、私のリソースは CartItems を含む Cart であり、それぞれに Product があるとします。私のURIは次のようになります:

# 現在のユーザーのカートに商品を追加
POST /products/product_id/cart_items/

# 現在のユーザーのカートから商品を削除
削除 /cart_items/cart_item_id/

もしそうなら、「空のカート」リンクの RESTful URI はどのようになりますか?

代わりに、カートをアクションの汎用ホルダーと考えることができます (ここで説明されているように)。

# 商品を追加
# フォームデータの内容例 product_id=123&action=add
POST /carts/cart_id/actions/

# 商品を削除
# action_id は、製品を追加するアクションの ID です 123
DELETE アクション/action_id

# 空のカート
# フォーム データには action=clear が含まれます
POST /carts/cart_id/actions/

このアプローチは、必要以上に複雑に思えます。より良い方法は何でしょうか?

4

3 に答える 3

18

2 番目の方法は使用しないでください。1 つのエンドポイントを介して別のファネリングを行うとactions、RESTful IMO とは感じられません。

カートからDELETE /cart_items/cart_item_id/削除します。カート自体をクリアするのはcart_item_idどうですか?DELETE /cart_items/

于 2009-01-14T20:41:04.993 に答える
8

カートへのアイテムの追加:

POST carts/{cartid}/items

カートから特定のアイテムを取得する:

GET carts/{cartid}/items/{itemid}

カートから特定のアイテムを削除する:

DELETE carts/{cartid}/items/{itemid}

カートの状態を取得する:

GET carts/{cartid}/state

(カート内のアイテムの数を示す0,1のような値を返す可能性があります)

カートを空にする:

PUT carts/{cartid}/state?state=0

これは直感的に見えますか?

于 2009-02-17T11:15:31.907 に答える
1

DELETE /cart_items/ここでも議論されている興味深いアイデアです。

于 2009-01-14T20:59:11.947 に答える