Heim  >  Artikel  >  Web-Frontend  >  Neue strukturierte Felder RFC raus, ebenso mein Javascript-Paket

Neue strukturierte Felder RFC raus, ebenso mein Javascript-Paket

Susan Sarandon
Susan SarandonOriginal
2024-10-05 10:39:02783Durchsuche

New Structured Fields RFC out, and so is my Javascript package

Ein neuer RFC wurde für strukturierte Felder veröffentlicht: RFC9651.

Was ist das?

HTTP-Header waren in Bezug auf die Komplexität der Werte ein bisschen unpassend
sind codiert, wobei viele Header einen eigenen Mini-Parser erfordern.

Vor einiger Zeit wurde mit dem Versuch begonnen, dieses Problem künftig für Header mit dem Namen „Structured Fields“ zu beheben. Sie heißen Felder und nicht „Header“, weil HTTP sowohl Header als auch Trailer hat!

Mit strukturierten Feldern können Sie Dinge wie Listen, Wörterbücher, Zeichenfolgen, Zahlen, boolesche Werte und Binärdaten kodieren. Der ursprüngliche RFC aus dem Jahr 2021 ist ziemlich erfolgreich und obwohl viele bestehende Header nicht auf dieses Format nachgerüstet werden können, machen sich viele neue Standards die Vorteile zunutze.

Einige Beispiele:


// Parsed an ASCII string
Header: "foo"

// A simple string, called a 'Token' in the spec
Header: foo

// Parsed as number
Header: 5
Header: -10
Header: 5.01415

// Parsed into boolean
Header: ?1
Header: ?0

// Binaries are base64 encoded
Header: :RE0gbWUgZm9yIGEgZnJlZSBjb29raWU=:

// Items can have parameters
Header: "Hello world"; a="5"

// A simple list
Header: 5, "foo", bar, ?1

# Each element can have parameters
Header: sometoken; param1; param2=hi, 42

// A list can also contain lists itself. These are called 'inner lists' and
// use parenthesis
Header: sometoken, (innerlistitem1 innerlistitem2), (anotherlist)

// A simple dictionary
Header: fn="evert", ln="pot", coffee=?1

// Each item may have parameters too
Header: foo=123; q=1, bar=123, q=0.5

// A dictionary value may be an inner list again
Header: foo=(1 2 3)


Der neue RFC, der letzte Woche veröffentlicht wurde, fügt zwei neue Datentypen hinzu: Datumsangaben und
„Anzeigezeichenfolgen“, eine Unicode-Serialisierung, die in das HTTP-Header- (und Trailer-)Format passt.

// Parsed into a Date object<br>
Header: @1686634251

<p>// A Unicode string, called a 'Display String' in the spec. They use<br>
// percent encoding, but encode a different set of characters than<br>
// URLs.<br>
Header %"Frysl%C3%A2n"<br>
</p>




Warum sollte es dich interessieren?

Wenn Sie auf diese Header in freier Wildbahn stoßen, ist es eine wirklich gute Idee, einen Standardparser zu verwenden. Einer der Gründe dafür ist, dass bei der Verwendung strukturierter Felder ein integrierter Erweiterungsmechanismus vorhanden ist. Sie sollten sicherstellen, dass Ihre Anwendung nicht plötzlich abstürzt, wenn ein neuer Parameter angezeigt wird.

Möglicherweise möchten Sie auch Ihre eigenen HTTP-Header definieren und verwenden. Das strukturierte Feldformat ist eine sehr gute „Standardauswahl“, die Entscheidungen wie „Wie soll ich ein Schlüsselwertobjekt kodieren“ oder „Wie kodiere ich eine UTF-8-Zeichenfolge“ entfällt.

Da für jede Sprache Parser auftauchen, müssen Sie sich keine Gedanken darüber machen, Ihre eigenen, einmaligen Formate zu schreiben.

Javascript-Paket

Ich bin der Betreuer einer Javascript-Bibliothek für strukturierte Felder, genannt „strukturierte Header“, die ich auch für diesen neuen RFC aktualisiert habe. Ich wünschte, ich hätte den Namen „Strukturierte Felder“ gewählt, aber ich habe den Namen gewählt, bevor der ursprüngliche Standard seinen Namen geändert hat.

Ich habe gerade Version 2 dieser Bibliothek veröffentlicht, die diese neuen Typen unterstützt, und außerdem Unterstützung für ES-Module hinzugefügt.

Kommentare?

Antworten Sie auf eine dieser Fragen:

  • [Mastodon-Beitrag][4]
  • [Bluesky-Beitrag][5]

Das obige ist der detaillierte Inhalt vonNeue strukturierte Felder RFC raus, ebenso mein Javascript-Paket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn