2016-08-19 2 views
0

내 웹 API 중 하나에서 반환 한 JSON 응답에 비즈니스에서 필수로 표시된 최소 필드 집합이 포함될 것으로 기대합니다.DB에서 발견 된 잘못된 데이터에 대한 HTTP 응답 상태 코드

계약을 존중하지 않는 불량 데이터가 DB에서 발견되는 경우 어느 것이 더 맞을까요? HTTP status code?

현재 500을 사용하고 있지만 개선해야 할 수도 있습니다. 또한 서비스 앞에 붙어있는 바니시는 500503 Service Unavailable으로 변환합니다.

예 :

{ 
    "id": "123", 
    "message": "500 - Exception during request processing. Cause: subtitles is a required field of class Movie and cannot be empty", 
    "_links": { 
    "self": { 
     "href": "/products/movies/123" 
    } 
    } 
} 

덕분에

+0

내가 나쁜 데이터라면 400 나쁜 요청이어야한다고 생각하겠습니까? – mituw16

+0

다음 링크를 클릭하면 도움이 될 것입니다. http://stackoverflow.com/questions/1434315/http-status-code-for-database-is-down and http://stackoverflow.com/questions/3290182/rest-http -status-code-for-failed-validation-validation-or-invalid-duplicate – d3r1ck

+0

요청이 정확하지 않습니다. 데이터베이스에서 동일한 예기치 않은 데이터가 발견 되었기 때문에 "bad"응답입니다. –

답변

0

500 내부 서버 오류 문제가 서버 측에서 본질적으로 솔직히 여기에 충분한 것 같다 그것은 어떤 잘못이에서 일을 반영하지 않습니다 클라이언트 측.

1

400은 BAD 요청을 의미하지만 요청에는 아무런 문제가 없으므로 사용하지 마십시오.

500은 예기치 않은 오류가 발생한 것처럼 서버 오류를 의미합니다. 코드가 파손되어 은하계가 충돌했습니다. 나쁜 데이터가 원인이 아닙니다.

불량 데이터가있는 경우가 있으므로 여러 가지 방법을 사용할 수 있습니다.

첫 번째 질문은 잘못된 데이터로 무엇을 할 계획입니까?

  1. 이 경우 삭제할 수 있습니다. 요청이 양호하지만 다시 보낼 데이터가없는 204를 반환합니다. 404는 끝점이 존재하지 않고 데이터가 존재하지 않기 때문에 데이터가없는 경우 404를 반환하지 않습니다.

  2. 다른 사람이 수정하는 동안 주 데이터베이스를 임시 데이터로 이동할 수 있습니다.

어느 쪽이든 잘못된 데이터를 반환하지 않으며 클라이언트가 그 데이터가 나쁜 이유는 신경 쓰지 않습니다. 모든 클라이언트는 모든 데이터가 있는지 여부와 관련됩니다. 고객이 중요하다고 생각하는 분야가 데이터에 누락되었다는 점을 고객이 고려해야하는 이유는 무엇입니까?

다른 접근법을 사용하여 보유한 데이터를 반환 할 수 있습니다.

결론 : 불량 데이터를 어떻게 처리 할 것인지 결정하고 클라이언트에 어떠한 책임도지지 않습니다.