Zum Hauptinhalt springen

1. Introduction (Einführung)

Bedingte Anfragen sind HTTP-Anfragen [RFC7231], die ein oder mehrere Header-Felder enthalten, die eine Vorbedingung anzeigen, die getestet werden soll, bevor die Methodensemantik auf die Zielressource angewendet wird. Dieses Dokument definiert die HTTP/1.1-Mechanismen für bedingte Anfragen im Hinblick auf die in [RFC7230] definierten Architektur, Syntaxnotation und Konformitätskriterien.

Bedingte GET-Anfragen sind der effizienteste Mechanismus für HTTP-Cache-Aktualisierungen [RFC7234]. Bedingungen können auch auf zustandsändernde Methoden wie PUT und DELETE angewendet werden, um das Problem der "verlorenen Aktualisierung" zu verhindern: ein Client überschreibt versehentlich die Arbeit eines anderen Clients, der parallel gearbeitet hat.

Vorbedingungen für bedingte Anfragen basieren auf dem Zustand der Zielressource als Ganzes (ihrem aktuellen Wertsatz) oder dem Zustand, wie er in einer zuvor erhaltenen Darstellung beobachtet wurde (ein Wert in diesem Satz). Eine Ressource kann mehrere aktuelle Darstellungen haben, jede mit ihrem eigenen beobachtbaren Zustand. Die Mechanismen für bedingte Anfragen gehen davon aus, dass die Zuordnung von Anfragen zu einer "ausgewählten Darstellung" (selected representation) (Abschnitt 3 von [RFC7231]) im Laufe der Zeit konsistent sein wird, wenn der Server beabsichtigt, Bedingungen zu nutzen. Wenn die Zuordnung inkonsistent ist und der Server die geeignete Darstellung nicht auswählen kann, wird kein Schaden entstehen, wenn die Vorbedingung als false bewertet wird.

Die von dieser Spezifikation definierten Vorbedingungen für bedingte Anfragen (Abschnitt 3) werden, wenn sie auf den Empfänger anwendbar sind (Abschnitt 5), gemäß ihrer Rangfolge (Abschnitt 6) ausgewertet.

1.1. Conformance and Error Handling (Konformität und Fehlerbehandlung)

Die Schlüsselwörter "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" und "OPTIONAL" in diesem Dokument sind wie in [RFC2119] beschrieben zu interpretieren.

  • MUST / REQUIRED / SHALL: MUSS
  • MUST NOT / SHALL NOT: DARF NICHT
  • SHOULD / RECOMMENDED: SOLLTE
  • SHOULD NOT / NOT RECOMMENDED: SOLLTE NICHT
  • MAY / OPTIONAL: KANN

Konformitätskriterien und Überlegungen zur Fehlerbehandlung sind in Abschnitt 2.5 von [RFC7230] definiert.

1.2. Syntax Notation (Syntaxnotation)

Diese Spezifikation verwendet die erweiterte Backus-Naur-Form (Augmented Backus-Naur Form, ABNF) Notation von [RFC5234] mit einer in Abschnitt 7 von [RFC7230] definierten Listenerweiterung, die eine kompakte Definition von durch Kommas getrennten Listen unter Verwendung eines '#'-Operators ermöglicht (ähnlich wie der '*'-Operator die Wiederholung anzeigt). Anhang B beschreibt Regeln, die aus anderen Dokumenten importiert wurden. Anhang C zeigt die gesammelte Grammatik mit allen auf die Standard-ABNF-Notation erweiterten Listenoperatoren.