저는 API를 작성하고 HTTP 상태 코드를 사용하여 쿼리 결과를보고 싶은 사람을 알고 있습니다. 예 : 사용자가 example.com/api/product_info?product_id=X
을 호출하고 해당 제품이 없으면 HTTP 상태 400: Bad Request
을 반환합니다. 나는 이것이 유효한 호출 (즉, 실제 HTTP 요청이 잘못된 형식이 아니기 때문에)이 200
코드 응답을 반환해야하며 응답의 몸체는 {status: 'error'; message: 'No such product'}
과 같아야한다고 생각합니다.비 HTTP 오류에 HTTP 상태 코드를 사용하는 것이 적절합니까?
그래서 제 질문은
1) 위의 예에서와 같이, 비 HTTP 프로그램 상태를 전달하기 위해 HTTP 상태 코드를 사용하는 것이 적절하다, 무엇입니까?
2) HTTP 상태 코드가 사용하기에 적합한지를 설명하는 표준 또는 적어도 널리 사용되는 사양이 있습니까? 실제로 단지 이것에 대해 다른 일을 얘기했다
클라이언트가 존재하지 않는 제품 리소스를 클라이언트가 요청할 때 404가 적합하다고 생각합니다. 꼭해야 할 일이 없으면 4XX 또는 5XX를 반환해야합니다. [This] (http://stackoverflow.com/questions/27921537/returning-http-200-ok-with-error-within-response-body/) 도움이 될 수 있습니다. 2. [HTTP 사양] (https://www.ietf.org/rfc/rfc2616.txt) – FrAn
@FrAn 이것이 실제로 존재하지 않는 리소스의 경우인지 확실하지 않습니다. 다른 예를 들어, API 호출이'/ setprice? product = X & price = Y' 인 경우 제품 X가 존재하지만 Y가 수용 가능한 가격이 아닌 경우 어떤 응답을 반환합니까 (예 : 최소 가격이 $ 5 일 때 $ 1)? 아직도 404? – Benubird
이 경우 고객이 가격을 설정하려고 시도하는이 경우 400 또는 403을 반환하지만 가격 값은 허용되지 않으므로 제품을 얻으 려하지 않으므로 404가됩니다. 이는 논쟁의 여지가있는 문제입니다. – FrAn