ETag e If-Match
Due persone modificano la stessa risorsa nello stesso momento: chi salva per secondo non deve cancellare senza
saperlo il lavoro del primo. Arenile usa la concorrenza ottimistica: ogni risorsa versionata ha un numero di
versione, esposto come ETag.
-
Leggi la risorsa: la risposta ha l’header
ETag: "3"(e il campoversion).Finestra del terminale curl -i -b cookies.txt https://prenota.mio-lido.it/api/admin/v1/establishments/$ES/online-settings# ETag: "3" -
Modifica inviando la versione letta in
If-Match:Finestra del terminale curl -X PUT -b cookies.txt -H "X-CSRF-Token: $CSRF" \-H 'If-Match: "3"' -H 'Content-Type: application/json' \-d @impostazioni.json \https://prenota.mio-lido.it/api/admin/v1/establishments/$ES/online-settings -
Se nel frattempo qualcuno ha salvato la versione 4, la risposta è
412version_conflictconcurrent_version: 4: rileggi, applica di nuovo le tue modifiche e riprova.
Dove si usa
Sezione intitolata “Dove si usa”| Risorsa | If-Match |
|---|---|
| Impostazioni dello stabilimento, pagina pubblica, pagamenti, email | facoltativo ma consigliato |
| Configurazione (stagioni, zone, pool, catalogo, regole, policy…) | facoltativo ma consigliato |
Mappe (PUT /maps/{id}) |
obbligatorio: senza, 428 precondition_required |
| Modifiche di una prenotazione | facoltativo; il pannello lo usa sempre |
Forme accettate: "3", la forma debole W/"3" (prodotta dai proxy che comprimono le risposte) e * (qualsiasi
versione: sovrascrive consapevolmente).
ETag e 304 nell’API pubblica
Sezione intitolata “ETag e 304 nell’API pubblica”Il profilo pubblico dello stabilimento (GET /api/public/v1/{slug}) ha un ETag calcolato sul contenuto:
inviando If-None-Match con l’ultimo valore ricevuto, la risposta è 304 Not Modified senza corpo. La pagina di
prenotazione lo usa per caricarsi più in fretta.

