4

残りの重要な原則の 1 つは、サーバー上で状態を維持したり、ステートレスに通信したりしないことです。この原則がショッピングカートでどのように機能するかを知りたいですか? たとえば、ユーザーがショッピング Web サイトからショッピング カートに商品を追加するとします。私の意見では、サーバーにはショッピング カートをセッション スコープに含めるための実装がいくつかあり、ユーザーはポスト コールを送信して製品をショッピング カートに追加します。例: /shoppingcart/products/1. ユーザーがチェックアウトを確認するまで、製品はショッピング カートに追加されたままになります (ただし、データベースには保持されません)。チェックアウトの確認中、ショッピング カートのアイテムはサーバー側のデータベースに保存されます。

このアプローチ (セッション スコープ内にあるサーバー側のショッピング カートにアイテムを入れる) は残りの原則に違反しますか? はいの場合、「ステートレス」通信の原則に対応して、ショッピング カートに商品を追加するにはどうすればよいでしょうか。

4

1 に答える 1

2

REST で任意の 2 つのリソース間の関連付けを追加または削除する場合と同様に、ショッピング カートはリソースとして処理し、製品を追加または削除する必要があります。クライアントが「カート内のアイテムを購入してください」と言う代わりに、クライアントは「カート #187462 内のアイテムを購入してください」と言う必要があります。各カートに URL を割り当て、現在のセッションに関連付けられた製品配列ではなく、そのリソースに対して操作を実行します。

これもステートレスな代替手段は、クライアントがカート内のすべてのアイテムを追跡するようにすることですが、これは、ユーザーが 1 つのコンピューターでカートを離れて (放棄して)、別のデバイスでショッピングを再開できないことを意味します。

補遺:アクセス許可/アクセス制御は個別に割り当てることができることに注意してください。もちろん、各カートには URL がありますが、ログインしたユーザーが作成したカート リソースのみを表示できるようにしてください。

于 2013-08-05T15:38:34.603 に答える