가치있는 일을 위해 나는 이것을 다르게합니다. 성공적인 호출에는 JSON 객체 만 있습니다. true를 나타내는 성공 필드와 JSON 오브젝트가있는 페이로드 필드를 포함하는 상위 레벨 JSON 오브젝트가 필요하지 않습니다. 200으로 적절한 JSON 객체를 반환하거나 헤더의 HTTP 상태에 대해 200 범위에서 적절한 것을 반환합니다.
그러나 오류 (400 제품군의 무언가)가 있으면 올바르게 구성된 JSON 오류 객체를 반환합니다. 예를 들어, 클라이언트가 이메일 주소와 전화 번호를 사용하여 사용자를 POST하고 있고 그 중 하나가 잘못된 경우 (예 : 기본 데이터베이스에 삽입 할 수없는 경우) 다음과 같이 반환합니다.
{
"description" : "Validation Failed"
"errors" : [ {
"field" : "phoneNumber",
"message" : "Invalid phone number."
} ],
}
여기서 중요한 것은 "field"속성이 확인할 수없는 JSON 필드와 정확히 일치해야한다는 것입니다. 이를 통해 클라이언트는 요청에 무엇이 잘못되었는지 정확하게 알 수 있습니다. 또한 "메시지"는 요청의 로캘에 있습니다. "emailAddress"및 "phoneNumber"둘 다 유효하지 않은 경우 "errors"배열에는 두 항목 모두에 대한 항목이 포함됩니다. 409 (충돌) JSON 응답 본문은 다음과 같습니다.
{
"description" : "Already Exists"
"errors" : [ {
"field" : "phoneNumber",
"message" : "Phone number already exists for another user."
} ],
}
클라이언트는 HTTP 상태 코드와이 JSON을 사용하여 결정적인 방식으로 오류에 응답하는 데 필요한 모든 것을 갖추고 있으며 HTTP 상태 코드 교체를 완료하는 새로운 오류 표준을 만들지 않습니다. 이 오류는 400 오류 범위에서만 발생합니다. 200 범위의 모든 것에 대해서는 적절한 것을 반환 할 수 있습니다. 나에게 그것은 종종 HAL과 같은 JSON 객체이지만 실제로는 중요하지 않습니다.
내가 추가하려고 생각한 것은 "오류"배열 항목이나 JSON 객체 자체의 루트에있는 숫자 오류 코드였습니다. 그러나 지금까지는 필요하지 않았습니다.