2012-05-24 8 views
20

그래서 나는 휴식 API 게시물 내가 반환해야하는지없는 자원 및 필수 필드를 만들려고한다의 HTTP 상태 코드 400 대 412

을 개발하고 있어요?

400

- 잘못된 요청

또는

412 - 전제 조건은

그리고 왜 실패?

답변

28

매개 변수이 잘못된 경우 400을 사용하십시오. If-* 중 하나가 헤더 (If-Match, If-Modified-Since 등) 중 하나가 잘못된 경우 412를 사용하십시오.

왜? 그것은 RFC가 말한 것입니다. 예를 들어 If-Match 사양의 추출물 참조 :

가 엔터티 태그도 일치 것도, 또는 "*"이 주어 졌는데도 아무런 현재의 엔터티가 존재하지 않는 경우, 서버가 요청 된 방법을 수행 안됩니다해야하는 경우를, 그리고 412을 반환해야 (Precondition Failed) 응답. 이 동작은 클라이언트가 PUT과 같은 업데이트 방법으로 인해 클라이언트가 마지막으로 검색 한 이후 변경된 리소스를 수정하지 못하게하려는 경우에 가장 유용합니다.

+1

400에 대한 형식이 잘못된 구문으로 인해 요청을 수행 할 수 없다는 내용도 있습니다. – Rob

+1

이 페이지는 정말 도움이되었습니다. - http://odino.org/don-t-rape-http-if-none-match-the- 412-http-status-code/- 컨텍스트에 대한 'PUT'요청을 사용하면 특정 상태 코드를 남용하기 쉽기 때문에 상황에 대한 이해를 쉽게 할 수있었습니다. – Charlie

12

412는 서버가 클라이언트가 지정한 조건을 충족시키지 않을 때 사용됩니다.

귀하의 경우에는 400을 사용해야합니다. 단지 잘못된 요청 일뿐입니다.

사전 조건 헤더에 대한 설명은 link을 참조하십시오.

일반적으로 Etag 헤더는 HTTP 헤더의 리소스 을 나타내는 문자열입니다. If-Match가 사전 조건 HTTP 헤더 인 자원을 요청합니다. 보낸 코드 과 일치하지 않으면 412를 보냅니다.

If-None-Match는 Etag가 클라이언트가 보낸 것과 다른 경우에만 전체 응답을 처리하도록 서버에 지시합니다.

+0

왜 downvote? 답은 무엇이 잘못 되었습니까? – nunespascal

+4

누군가가 나쁜 날을 보냈다고 생각합니다. 그냥 무시하고 시스템이 그 일을하게하십시오 :) – BalusC

+0

그것을 균형을 upvote 있습니다. –

3

상태 코드 422를 사용할 수 있습니다. 원치 않는 경우 400을 사용할 수 있습니다.