2016-11-25 3 views
1

私はRESTfulなAPIでHTTP POSTとしてaddToCartメソッドを設計し始めました。これは、クライアントが最初に商品をカートに追加したとき(POSTはサーバに新しいエントリを作成するとき)によく見えます。しかし、同じHTTPルールは、クライアントがサイトをブラウズして同じ項目を再び追加するときに破損します。新しいエントリを作成するのではなく、既存のアイテムの数量を更新するだけです。既にカートに入っている既存のアイテムを「カートに追加」するためにRESTful APIに使用するHTTPメソッドはどれですか?

リソースを誤って更新するためにPOSTを使用していませんか?これを実装する方法は何ですか?この状況をどう解釈するか。

注:私のapiを使用するクライアント/ UIフロントは、サーバーに既に存在するかどうかを覚えていません。 eコマースアプリケーションのaddtocartを例として考えてください。

+0

カートに同じ商品がすでに存在するかどうかを確認してくださいそれ以外の場合は新しいものを追加します。 – Veki

+0

私は同じPOSTでそれを行うことができます。しかし、POST仕様ではPOST要求ごとにサーバー上にエントリが作成されるため、HTTP POSTメソッド違反はありませんか? –

答えて

0

ここの難しさは、元の商品をカートにどのように追加するかにすでにあると思います。

カートにアイテムを追加するときに、新しいオブジェクト(アイテム)を作成していますか?または、既存のアイテム(カート)を変更していますか?私には、後者を言う方が理にかなっています。アイテムを投稿することは、新しいアイテムをストアに追加するときに、別の状況のた​​めに予約する必要があるようです。

概念的には、カートは、店舗内のすべてのアイテムのベクトルに似ていて、数字(ほとんどの場合は0)に関連付けられています。カートに何かを追加するということは、既に0以上になっているかどうかに関わらず、項目の1つを増やすことを意味します。

+0

ありがとうございます。あなたは私にさまざまな角度から見る方法を教えてくれました。これは私を助けます。 –

0

PATCHを使用すると、既存のオブジェクトに部品オブジェクト/更新を送信できます。

+0

RESTfulサービスを利用しているクライアント/ UIは、製品が既にカートに入っているかどうかを知ることができません。これに対処する方法は? –

+0

本当に商品IDをお送りしていますか? APIは、それが数量を追加または更新するかどうかを決定します。 – Stuart

+0

はい。仕様に従って、POSTは追加用であり、PATCHは部分更新用です。 POSTメソッドの数量を仕様通り違反に更新しないでしょうか? –

0

あなたのモデルに基づいています。 IMHO POSTを使って新しいインテントやカート操作をモデリングするのであれば、POSTは基本的には何でも構いません。

関連する問題