Está en el desarrollador de la aplicación verificar la etiqueta electrónica y proporcionar esa lógica. No es mágico que el servidor web lo haga por ti porque solo sabe cómo calcular E-Tagencabezados para contenido estático. Así que tomemos su escenario anterior y analicemos cómo debería ocurrir la interacción.
GET /projects/1
El servidor recibe la solicitud, determina la etiqueta electrónica para esta versión del registro y la devuelve con el contenido real.
200 - OK
E-Tag: "412"
Content-Type: application/json
{modified: false}
Como el cliente ahora tiene el valor E-Tag, puede incluir eso con la PUTsolicitud:
PUT /projects/1
If-Match: "412"
Content-Type: application/json
{modified: true}
En este punto, su aplicación debe hacer lo siguiente:
- Verifique que la etiqueta electrónica sigue siendo correcta: "412" == "412"?
- Si es así, realice la actualización y calcule una nueva etiqueta electrónica
Envía la respuesta de éxito.
204 No Content
E-Tag: "543"
Si llega otra solicitud e intenta realizar una PUTsimilar a la solicitud anterior, la segunda vez que su código de servidor la evalúa, usted es responsable de proporcionar el mensaje de error.
- Verifique que la etiqueta electrónica siga siendo correcta: "412"! = "543"
En caso de falla, envíe la respuesta a la falla.
412 Precondition Failed
Este es el código que realmente tienes que escribir. De hecho, la etiqueta E puede ser cualquier texto (dentro de los límites definidos en la especificación HTTP). No tiene que ser un número. También puede ser un valor hash.