나는 클라이언트 (브라우저의 JS)가 서버와 대화하기위한 API 디자인을 약간 교차하고 있습니다. 안전 잠금으로 인해 조치 실패를 표시하기 위해 HTTP 409 충돌을 사용합니다. 안전 잠금 장치는 개발자가 실수로 고객의 생산 시스템을 변경하지 못하게합니다. 나는 특정 API 호출이 실패한 이유를 나타 내기 위해 클라이언트에서 409를 조금 더 우아하게 처리하는 임무를 맡았습니다.
내 솔루션은 409로 인해 오류가 발생했을 때 클라이언트에 알림을 표시하는 AJAX 호출의 실패 처리기를 래핑하는 것입니다. 모두 괜찮으며 동일한 메커니즘을 사용하는 다른 4XX 및 5XX 오류와 함께 잘 작동합니다.
비즈니스 로직 오류가 발생했을 때 경로 처리기 중 하나가 409로 응답하는 문제가 발생했습니다. AJAX 래퍼는 안전 잠금이 켜져 있다고보고하지만 클라이언트의 기존 오류 처리기는 문제가 본문을 기반으로하는 문제를보고합니다. 응답의. 간단한 해결책은 핸들러의 응답 또는 안전 잠금을 나타내는 데 사용하는 상태 코드를 변경하는 것입니다.
비즈니스 로직 오류를 나타내는 데 HTTP 상태 코드를 사용해야합니까? 이 질문 은 내가 직면 한 것과 같은 문제를 다루지 만 많은 견인력을 얻지 못했습니다. 링크 된 답변에서 제안한 것처럼 비즈니스 논리 내에서 실패를 나타내는 적절한 본문으로 HTTP 200 OK를 사용하려고합니다.
여기에 강한 의견이 있습니까? 누구든지 이것이 실패를 나타내는 잘못된 방법이라는 것을 확신 할 수 있습니까?
400 Bad Request
담요로 HTTP 코드는 비즈니스 로직 오류를 클래스로 다루는 것이 가장 좋습니다.
400 Bad Request
데이터가 없거나 읽거나 파싱 할 수없는 경우 사용하는 경향이 있습니다 . 즉, 요청 데이터 자체가 어떤 식 으로든 나쁩니다.
400 Bad Request
. 이러한 분리의 이유는 미래의 시스템, 개발자 또는 독자가 전 세계 표준의 편차로 인해 혼란 스러울 수 있기 때문입니다.