저장된 신용 카드를 사용하여 주문하는 것을 포함하여 여러 사용자 상호 작용을 처리하는 RESTful API를 만들고 있습니다.
성공적인 주문의 경우 200 OK를 반환하고 주문 요청이 잘못되었거나 잘못된 경우 400 Bad Request를 반환합니다. 그러나 실제 주문 처리 중에 문제가 발생하면 무엇을 반품해야합니까?
- 클라이언트는 사용자 리소스에 대해 서버에 주문을 게시합니다. 사용자가 없으면 404 Not Found가 반환됩니다.
- 주문 형식 및 정보가 확인되었습니다. 유효하지 않은 경우 400 Bad Request가 반환됩니다.
- 주문이 처리됩니다. 주문이 성공하면 주문에 대해 201 Created가 반환됩니다. 예기치 않은 오류가 발생하면 500 서버 오류가 반환됩니다.
마지막 단계는 문제입니다. 다른 이유로 주문이 완료되지 않으면 무엇을 반품해야합니까? 가능한 시나리오는 다음과 같습니다.
- 상품이 매진되었습니다
- 사용자 최대 주문 한도에 도달했습니다.
- 신용 카드 거래 실패 (잔액 부족 등)
이것은 400 또는 500에 적합하지 않은 것 같습니다. 더 나은 코드가 없으면 400으로 볼 수있는 것이 있으면 비즈니스 규칙에 따라 요청이 유효하지 않습니다. 정확하지 않은 것 같습니다.
편집 : 동일한 주제에 대한 기존 토론 도 발견 했습니다 . 모든 답변은 이러한 유형의 위반에 대해 상태 코드를 사용하는 것으로 보이는데, 400, 409 또는 422 확장 사용 사이에 약간의 논의가 있습니다.