• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

리소스를 수정하는 메서드 설계 질문

21.10.02 18:21 작성 조회수 137

0

상품의 재고를 차감하는 API를 HTTP 메서드로 구현한다고 하면 PUT이 됐던 PATCH가 됐던 상품 리소스의 '재고' 부분을 변경해야 합니다.

그런데 HTTP 메서드 정의에 따르면 원래 재고가 100인 상품의 재고를 1만큼 차감한다고 할 경우 요청 URI에 들어갈 재고값은 1이 아니라 99가 되는 것이 맞는 것 같은데 제가 제대로 이해한 게 맞나요?

그렇다면 상품의 재고를 차감하는 HTTP 메서드의 URI는 어떻게 설계해야 할까요? 상품의 재고를 차감하기 전에 상품의 재고 정보를 GET으로 가져온 다음 차감된 재고량을 PUT 또는 PATCH 메소드에 담는 것이 맞나요?

실제 서비스에서는 이러한 API를 만들 때 어떤 방식으로 구현하는 지도 궁금합니다. HTTP 프로토콜을 따를 경우 PUT이나 PATCH 메소드를 호출하기 전에는 항상 GET 메소드를 호출해야 하는 것으로 보이는데 이런 부분에서 성능 이슈가 발생하지는 않는지 궁금하네요.

답변 1

답변을 작성해보세요.

3

David님의 프로필

David

2021.10.04

안녕하세요. Mx님, 공식 서포터즈 David입니다.

.

이해하신게 맞습니다. PUT의 경우 대체하는 것이기 때문에 변경하고 싶은 재고량(99)이 제공되어야 합니다.

아래 쿠팡의 경우를 보시면 어떻게 설계 하셔야 하는지 볼 수 있으니 참고 부탁드립니다.
https://developers.coupangcorp.com/hc/ko/articles/360034156253-%EC%83%81%ED%92%88-%EC%95%84%EC%9D%B4%ED%85%9C%EB%B3%84-%EC%88%98%EB%9F%89-%EB%B3%80%EA%B2%BD

상황에 따라 다르지만 기존 재고 수량을 바탕으로 수량을 변경하려한다면 GET 요청으로 리소스를 가져와 기존 재고 수량을 파악해야 합니다. 그리고 기존 재고 수량을 바탕으로 변경될 재고 수량을 재고수량 API에 태워서 재고수량을 변경해줘야겠죠.

GET, PUT 2번의 요청은 PUT만 단독으로 쓰일 때보다 1번의 요청을 더 필요로하지만 기존 재고 수량을 파악해야하는 상황이라면 어쩔 수 없는 부분입니다.

.
감사합니다.