2011-09-14 2 views
1

"If-Match"헤더로 PUT 또는 DELETE를 수행 할 때 클라이언트가 보낸 ETag가 오히려 staleness를 나타내는 경우 단지 412를 반환하는 것보다 클라이언트가 GET 왕복을 수행 할 필요가 없도록 (HTTP 헤더에 새 ETag를 포함하여) 전체 최신 엔터티를 반환하고 싶습니다. 그렇지 않으면 확실하게 수행 할 것입니다. - 내 경우에는 아마 적어도 100 %의 경우에서 할 것입니다.412 "사전 조건 실패"의 경우 엔티티의 최신 버전을 반환해도 괜찮습니까

내가 412에 대한 문서에 대한 또는에 대한 아무것도 표시되지 않습니다 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.13

와 상태 코드 (409), 말,보고, 그것을 할 일반적으로 문제가 될 것 같지 않습니다 어떤 하나는 4xx 오류의 응답 본문을 좋아합니다 : http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10

그럼 HTTP 프로토콜과 관련하여 무엇이든 최신의 엔티티와 그 ETag를 반환하지 않습니까?

답변

1

잘해야합니다

All 1xx (informational), 204 (no content), and 304 (not modified) responses MUST NOT include a message-body. All other responses do include a message-body, although it MAY be of zero length.

출처 : http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 당신은 이러한 종류의 "? 그것은 GET입니다 ..."대답

0

요청 사항은 무엇입니까? If-None-Match로 얻으시겠습니까? 이 경우 서버는 412를 반환하지 않습니다.

PUT, DELETE에 대해서는 수 있습니다. 현재 표현을 반환합니다. 대대적 인 표현을 위해서는 필요하지 않은 고객에게는 불편할 것입니다.

Location 헤더를 사용하여 페이로드에 자원 표현으로 레이블을 지정할 수도 있습니다. http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-16.html#identifying.response.associated.with.representation을 참조하십시오.

+0

자신에게 질문해라. 그러나 나는 정확하게 이해하고있는 것이 무엇인지에 관해 내가 말하고있는 것에 대해 나의 질문에서 명확하게했다. 412와 부실한 ETags에 대해 이야기하고 있다면 이해할 수없는 것입니다. PUT과 DELETE (POST는 사용하지는 않지만) + If-Match가 내가 말할 수있는 유일한 것일까요? (비 수사적 질문) –

+0

'위치'헤더 힌트를 보내 주셔서 감사합니다. 서비스를 사용하는 모든 사용자에게 유용 할지라도 리소스를 가져 오거나 삭제하는 방법을 알고있는 것처럼 확실히 알 수는 있습니다. 게시물을 편집하고 응답 본문을 보낼 때와 그렇지 않을 때를 지정하는 RFC 부분에 대한 참조를 추가했습니다. 당신이 편집을 수락 할 때 답을 수락합니다 (또는 사람들이 귀하의 클레임을 확인하기 위해 확인할 수있는 '공식'에 대한 다른 참조를 제공 할 것입니다). –

관련 문제