2012-01-23 1 views
1

다른 웹 서비스와 통합되는 RESTful 애플리케이션을 개발 중입니다.도메인 데이터 오류로 반환 할 HTTP 상태는 무엇입니까?

제 질문은 클라이언트가 해당 웹 서비스 중 하나에 대해 유효하지 않은 데이터를 게시 할 경우 어떤 HTTP 상태를 반환해야합니까? 예를 들어, 내 응용 프로그램에서 사용하는 웹 서비스에 대해 유효하지 않은 이름을 게시하는 경우 사용자 입력 오류를 고려하여 4 ** 상태 코드 중 어느 것을 반환해야합니까?

내가 만든 한 몇 가지 고려 사항, 나는 그들을 사용의 불편 해요 이유 :

  • 400 : 데이터가 유효하지 않습니다,하지만 요청 형식 자체
  • 403 : 서버가 아닙니다 데이터가 유효하지만, 응답을 거부
  • 406 : 오류가 아니라 "동의"헤더에 제공된 매개 변수에
  • (412)입니다 : 오류는 "만약 일치"헤더와 아무 상관이있다

그래서이 경우 무엇을 사용 하시겠습니까?

+0

이 시나리오를 이해하는 데 도움이되는 정보 : 내 응용 프로그램에서 사용하는 웹 서비스에 사용자가 비활성화되었다고 표시되면 웹 서비스가 작동하지 않는다고 가정합니다. – diogobaeder

답변

-1

실제로 REST 및 기타 웹 서비스의 HTTP 상태 코드는 명확하지 않으며 명확하지 않을 수 있습니다. 클라이언트가 실제로 프록시 서버와 통신 중이고 프록시가 자체 상태를 다시 보내는 경우에도 문제가 발생합니다. 웹 서비스에 문제가있는 경우 (응용 프로그램 아래에있을 수도 있음) 500을 얻을 수 있습니다.

과거에 200을 반환하고 클라이언트에 대한 오류 정보를 반환하기 위해 JSON 또는 기타 구조를 사용했습니다. .

+0

니스, 고마워, 나는 상태 200을 사용하고 "성공"을 JSON 응답 속성 중 하나로 사용한다. :-) – diogobaeder

+0

다른 HTTP 응답 헤더를 보내는 것이 좋습니다. X-MyServer-Magic. 클라이언트가 해당 헤더를 보지 못하면 캡 티브 웹 포털 또는 다른 것과 대화하는 것이 좋습니다. 어떤 사람들은 이것을 지나치게 공학이라고 부르지 만 그것은 내가 다루어야 만했던 현실적인 문제에서 비롯된 것입니다. – seand

+1

아니요, 오류 200에 대해서는 상태 200을 반환하지 마십시오. 200은 "OK"를 의미합니다. –

2

400 개가 붙어 있거나 422 개가 필요합니다 (필요한 것에 가까울 수 있음).

+0

422가 WebDAV와 관련이있는 것 같습니다. 이것이 내 서비스의 의미에 어떤 영향을 줄 수 있는지 궁금합니다. 400은 잘못된 요청이며 원하는 것은 아닙니다. 어쨌든 도움말을 주셔서 감사합니다. :-) – diogobaeder

+0

아니요, 422는 WebDAV와 관련이 없습니다. WebDAV에서 정의 된 것입니다. –

관련 문제