1. Introduction (Introduzione)
Le richieste condizionali sono richieste HTTP [RFC7231] che includono uno o più campi di intestazione che indicano una precondizione da testare prima di applicare la semantica del metodo alla risorsa di destinazione. Questo documento definisce i meccanismi di richieste condizionali HTTP/1.1 in termini di architettura, notazione sintattica e criteri di conformità definiti in [RFC7230].
Le richieste GET condizionali sono il meccanismo più efficiente per gli aggiornamenti della cache HTTP [RFC7234]. I condizionali possono anche essere applicati a metodi che modificano lo stato, come PUT e DELETE, per prevenire il problema dell'"aggiornamento perso": un client che sovrascrive accidentalmente il lavoro di un altro client che ha agito in parallelo.
Le precondizioni delle richieste condizionali si basano sullo stato della risorsa di destinazione nel suo complesso (il suo insieme di valori correnti) o sullo stato come osservato in una rappresentazione precedentemente ottenuta (un valore in quell'insieme). Una risorsa può avere più rappresentazioni correnti, ciascuna con il proprio stato osservabile. I meccanismi di richieste condizionali presumono che la mappatura delle richieste a una "rappresentazione selezionata" (selected representation) (Sezione 3 di [RFC7231]) sarà coerente nel tempo se il server intende sfruttare i condizionali. In ogni caso, se la mappatura è incoerente e il server non è in grado di selezionare la rappresentazione appropriata, non si verificherà alcun danno quando la precondizione viene valutata come false.
Le precondizioni delle richieste condizionali definite da questa specifica (Sezione 3) vengono valutate quando applicabili al destinatario (Sezione 5) secondo il loro ordine di precedenza (Sezione 6).
1.1. Conformance and Error Handling (Conformità e gestione degli errori)
Le parole chiave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto in [RFC2119].
- MUST / REQUIRED / SHALL: DEVE
- MUST NOT / SHALL NOT: NON DEVE
- SHOULD / RECOMMENDED: DOVREBBE
- SHOULD NOT / NOT RECOMMENDED: NON DOVREBBE
- MAY / OPTIONAL: PUÒ
I criteri di conformità e le considerazioni relative alla gestione degli errori sono definiti nella Sezione 2.5 di [RFC7230].
1.2. Syntax Notation (Notazione sintattica)
Questa specifica utilizza la notazione della forma di Backus-Naur aumentata (Augmented Backus-Naur Form, ABNF) di [RFC5234] con un'estensione di lista, definita nella Sezione 7 di [RFC7230], che consente una definizione compatta di elenchi separati da virgole utilizzando un operatore '#' (simile a come l'operatore '*' indica la ripetizione). L'Appendice B descrive le regole importate da altri documenti. L'Appendice C mostra la grammatica raccolta con tutti gli operatori di lista espansi alla notazione ABNF standard.