1. Introduction
Les requêtes conditionnelles sont des requêtes HTTP [RFC7231] qui incluent un ou plusieurs champs d'en-tête indiquant une précondition à tester avant d'appliquer la sémantique de la méthode à la ressource cible. Ce document définit les mécanismes de requêtes conditionnelles HTTP/1.1 en termes d'architecture, de notation syntaxique et de critères de conformité définis dans [RFC7230].
Les requêtes GET conditionnelles constituent le mécanisme le plus efficace pour les mises à jour de cache HTTP [RFC7234]. Les conditionnels peuvent également être appliqués aux méthodes modifiant l'état, telles que PUT et DELETE, pour éviter le problème de "mise à jour perdue": un client écrasant accidentellement le travail d'un autre client qui a agi en parallèle.
Les préconditions des requêtes conditionnelles sont basées sur l'état de la ressource cible dans son ensemble (son ensemble de valeurs actuelles) ou sur l'état tel qu'observé dans une représentation précédemment obtenue (une valeur dans cet ensemble). Une ressource peut avoir plusieurs représentations actuelles, chacune avec son propre état observable. Les mécanismes de requêtes conditionnelles supposent que le mappage des requêtes vers une "représentation sélectionnée" (Section 3 de [RFC7231]) sera cohérent dans le temps si le serveur a l'intention de tirer parti des conditionnels. Quoi qu'il en soit, si le mappage est incohérent et que le serveur ne peut pas sélectionner la représentation appropriée, aucun préjudice n'en résultera lorsque la précondition sera évaluée à false.
Les préconditions de requêtes conditionnelles définies par cette spécification (Section 3) sont évaluées lorsqu'elles sont applicables au destinataire (Section 5) selon leur ordre de priorité (Section 6).
1.1. Conformance and Error Handling (Conformité et gestion des erreurs)
Les mots-clés "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" et "OPTIONAL" dans ce document doivent être interprétés comme décrit dans [RFC2119].
- MUST / REQUIRED / SHALL: DOIT
- MUST NOT / SHALL NOT: NE DOIT PAS
- SHOULD / RECOMMENDED: DEVRAIT
- SHOULD NOT / NOT RECOMMENDED: NE DEVRAIT PAS
- MAY / OPTIONAL: PEUT
Les critères de conformité et les considérations concernant la gestion des erreurs sont définis dans la Section 2.5 de [RFC7230].
1.2. Syntax Notation (Notation syntaxique)
Cette spécification utilise la notation de forme de Backus-Naur augmentée (Augmented Backus-Naur Form, ABNF) de [RFC5234] avec une extension de liste, définie dans la Section 7 de [RFC7230], qui permet une définition compacte de listes séparées par des virgules en utilisant un opérateur '#' (similaire à la façon dont l'opérateur '*' indique la répétition). L'Annexe B décrit les règles importées d'autres documents. L'Annexe C montre la grammaire collectée avec tous les opérateurs de liste étendus à la notation ABNF standard.