실제로 E-Tag를 확인하고 해당 논리를 제공하는 것은 응용 프로그램 개발자에게 있습니다. E-Tag
정적 콘텐츠의 헤더 를 계산하는 방법 만 알고 있기 때문에 웹 서버가 당신을 위해하는 것은 마술이 아닙니다 . 위의 시나리오를 살펴보고 상호 작용이 발생하는 방식을 세분화하십시오.
GET /projects/1
서버는 요청을 수신하고이 버전의 레코드에 대한 E- 태그를 판별하여 실제 컨텐츠와 함께 리턴합니다.
200 - OK
E-Tag: "412"
Content-Type: application/json
{modified: false}
클라이언트는 이제 E-Tag 값을 가지므로 PUT
요청에 이를 포함 할 수 있습니다 .
PUT /projects/1
If-Match: "412"
Content-Type: application/json
{modified: true}
이 시점에서 응용 프로그램은 다음을 수행해야합니다.
- E-Tag가 여전히 올바른지 확인하십시오. "412"== "412"?
- 그렇다면 업데이트하고 새 E- 태그를 계산하십시오.
성공 응답을 보냅니다.
204 No Content
E-Tag: "543"
다른 요청이 와서 PUT
위의 요청과 유사한 작업을 수행하려고하면 서버 코드에서 두 번째로 요청을 평가하면 오류 메시지를 제공해야합니다.
- E-Tag가 여전히 올바른지 확인하십시오. "412"! = "543"
실패하면 실패 응답을 보내십시오.
412 Precondition Failed
이것은 실제로 작성해야하는 코드입니다. E- 태그는 실제로 모든 텍스트 (HTTP 사양에 정의 된 제한 내) 일 수 있습니다. 숫자 일 필요는 없습니다. 해시 값일 수도 있습니다.