2016-11-25 9 views
1

내 RESTful API에서 addToCart 메소드를 HTTP POST로 디자인하기 시작했습니다. 이것은 클라이언트가 처음으로 장바구니에 제품을 추가 할 때 (POST는 서버에 새 항목을 작성) 잘 보입니다. 그러나 클라이언트가 사이트를 탐색하여 동일한 항목을 다시 추가하면 동일한 HTTP 규칙이 중단됩니다. 새 항목을 만들지 않고 기존 항목의 수량 만 업데이트해야합니다.이미 카트에있는 기존 항목을 "장바구니에 추가"하기 위해 RESTful API에 사용할 HTTP 방법은 무엇입니까?

POST를 사용하여 리소스를 잘못 업데이트하지 않습니까? 이것을 구현하는 방법은 무엇입니까? 또는이 상황을 해석하는 방법.

참고 : 내 API를 사용하는 클라이언트/UI 프런트는 서버에 이미 존재하는지 기억하지 못합니다. 전자 상거래 애플리케이션의 addtocart를 예제로 생각해보십시오.

+0

장바구니에 이미 동일한 제품이 있는지 확인한 다음 변경된 경우 업데이트하십시오 그렇지 않으면 새로 추가하십시오. – Veki

+0

동일한 POST에서이 작업을 수행 할 수 있습니다. 하지만 POST 사양에 따르면 모든 POST 요청에 대해 서버에 항목이 생성되므로 HTTP POST 메서드 위반이 발생하지 않을까요? –

답변

0

원래의 항목을 장바구니에 추가하는 방법에 어려움이 이미 있다고 생각합니다.

장바구니에 항목을 추가 할 때 새 개체 (항목)를 만드십니까? 또는 기존 품목 (장바구니)을 수정하고 있습니까? 나에게 그것은 후자를 말하는 것이 더 합리적이다. 항목을 게시하면 저장소에 새 항목을 추가 할 때 다른 상황을 위해 예약해야하는 것처럼 보입니다.

개념적으로, 장바구니는 상점의 모든 항목에 대한 벡터와 같으며 번호 (거의 모든 숫자가 0)와 연결되어 있습니다. 장바구니에 무언가를 추가하는 것은 항목이 0보다 큰지 여부에 관계없이 항목 중 하나에 대해이 숫자를 증가시키는 것을 의미합니다.

+0

감사합니다. 당신은 다른 각도에서 보는 방법을 보여 줬어. 이것은 나를 돕는다. –

0

PATCH을 사용하여 기존 객체에 부품 객체/업데이트를 보낼 수 있습니다.

+0

내 RESTful 서비스를 사용하는 클라이언트/UI는 제품이 이미 장바구니에 있는지 여부를 알 수 없습니다. 이 문제를 어떻게 처리할까요? –

+0

분명히 제품 ID를 보내십니까? API가 수량을 추가하거나 업데이트할지 여부를 결정합니다. – Stuart

+0

예. 사양에 따라 POST는 추가 용이고 PATCH는 부분 업데이트 용입니다. POST 메서드의 수량을 사양대로 위반 사항을 업데이트하지 않습니까? –

0

귀하의 모델을 기반으로합니다. IMHO POST는 새로운 의도 또는 장바구니 작업을 모델링하는 경우에도 기본적으로 모든 것이 가능합니다.