JavaScript: Ketting 7.0 baut Unterstützung für HAL-Forms aus
Die siebte Hauptversion des generischen REST-Client für JavaScript unterstützt die aktuelle Version der HAL-Forms von Spring HATEOAS und weitere React-Elemente.
![](https://heise.cloudimg.io/width/610/q85.png-lossy-85.webp-lossy-85.foil1/_www-heise-de_/imgs/18/3/0/8/6/4/0/3/shutterstock_691484410-a2c28beb3ab0880b.jpeg)
(Bild: bluebay/Shutterstock.com)
- Silke Hahn
Der kanadische Webentwickler Evert Pot hat die siebte Hauptversion von Ketting herausgebracht, einem generischen REST-Client für JavaScript. Ketting soll laut Releasemeldung eine Lücke schließen, die im Bereich JavaScript und TypeScript bestanden hatte, denn es gilt als erster generischer Client für HATEOAS (Hypermedia as the Engine of Application State), das Projekt besteht seit 2016.
Mit Ketting lassen sich JSON-Objekte über HTTP anstoßen und je nach Leistungsumfang der verwendeten API können Entwicklerinnen und Entwickler damit eine Reihe von Prozessen automatisiert durchführen. Der REST-Client unterstützt Hypermedia-Formate wie HAL (Hypertext Application Language), Siren, Collection+JSON, JSON:API und kann offenbar auch HTML-Links erkennen und nachvollziehen.
Ketting baut Unterstützung für HAL-FORMS aus
Version 7 bringt ausgebaute Unterstützung für HAL-FORMS, eine Erweiterung der offenen Spezifikation HAL, mit der sich Repräsentationen von RESTful-Ressourcen strukturieren lassen. HAL gilt als wenig komplex und einfach zu handhaben – unter der Einschränkung, dass beim Einsatz von HAL für APIs bei dynamischem User-Input und schwankenden Workflow-Mustern detailliertere Informationen über die Transaktion (wie Methoden, Workflow, Args) dann direkt im Client-Code enthalten sein müssen. Der von HAL abgeleitete Medientyp HAL-FORMS ist ein Format zur Darstellung von API-Antworten und besteht aus einem JSON-Dokument, das Informationen über die HTTP-Methode und die Inhaltsart der Nachricht enthält.
Lesen Sie auch
Pragmatische Küchentricks für RESTful HAL APIs
Wesentliche Neuerungen bei den HAL-FORMS
Die neue Hauptversion des REST-Clients für JavaScript ist laut Releasemeldung im Blog des Entwicklers auf die Neuerungen der HAL-FORMS zugeschnitten, die die Community rings um das Projekt Spring HATEOAS in Version 1.3 M2 Anfang 2021 veröffentlicht hat (offenbar ist noch unklar, ob die aktuelle HATEOAS-Version als stabil gilt). Einige wesentliche neue Features von HAL-FORMS, die Ketting unterstützt, sind die Lookups, HTML5-Eingabetypen wie checkbox
, color
oder email
sowie Feldattribute aus HTML5-Formularfeldern wie placeholder
, min
, max
, step
, cols
oder rows
. Auch das Formular-target
, das zuvor nur durch die URL greifbar war, sowie mehrfache Formulare pro Dokument unterstützt Ketting 7.
Drei neue React-Bindings
Im Bereich der React-Bindings sind drei Features neu hinzugekommen. So verfügt react-ketting nun über eine RequireLogin
-Komponente, die sich um die OAuth2-Autorisierungs-Flows in React-Anwendungen kümmert (authorization_code
). Neu ist auch ein useCollection
-Hook zum Rendern einer Sammlung auf dem Server, und das Flag refreshOnStale
für useResource
und useCollection
, mit dem Ketting den Server automatisch nach dem neuen Ressourcen-Zustand fragt, sobald der Cache für eine Ressource als stale
gekennzeichnet ist. Folgendes Code-Beispiel führt das Rendern eines useCollection
-Hooks vor:
import { useCollection, useResource } from 'react-ketting';
import { Resource } from 'resource';
type Article = {
title: string;
body: string;
}
function ArticleList() {
const { loading, items } = useCollection<Article>('/articles');
if (loading) return <div>Loading...</div>;
return <section>
<h1>Articles!</h1>
{items.map( item => <ArticleItem key={item.uri} resource={item} /> ) }
</section>;
}
function ArticleItem({resource}: { resource: Resource<Article> }) {
const { loading, data } = useResource(resource);
if (loading) return <div>Loading...</div>;
return <div>
<h2>{data.title}</h2>
<p>{data.body}
</div>
}
Bezüglich refreshOnStale
hebt der Herausgeber hervor, dass die Flag besonders bei POST
-Anfragen an eine Collection gut einsetzbar sei, wenn es darum geht, ein neues Mitglied hinzuzufügen. Die Collection sollte dann automatisch ihre eigene Liste neu laden, wenn man zuvor auch einen useCollection
-Hook auf der gleichen Seite platziert hatte.
Automatische Deprecation-Warnungen
Ketting 7 sendet Warnmeldungen, wenn es auf als veraltet (deprecated) ausgezeichnete Header stößt, so reagiert es zum Beispiel auf die Begriffe Deprecation
und Sunset
, aber auch auf den Hinweis status: "deprecated"
. HTTP/2 Push haben die Entwickler offiziell begraben: Das Feature Prefer-Push
ist aus Ketting entfernt. Eine weitere Änderung betrifft das Caching, das frisch erstellte Ressourcen offenbar intelligenter behandelt als vorher, indem es den Response-Body gemeinsam mit dem neuen Uniform Resource Identifier (URI) im Cache aufnimmt.
Aktueller Stand, Pläne und Hinweise
Ketting 7 gilt seit Januar als produktionsreif. Wer Ketting bereits im Einsatz hat, kann mit folgendem Befehl das Upgrade durchführen:
npm i ketting@7
npm i react-ketting@2 # React users only
Für die Zukunft ist eine bessere Dokumentation geplant, der React-Support soll weiter ausgebaut werden und Bindings für andere Frontend-Frameworks stehen auf dem Plan. Auch soll es ein offizielles Websocket-Add-on geben. Zum aktuellen Release lassen sich vertiefende Informationen dem Blogeintrag des Herausgebers entnehmen.
Lesen Sie auch
Höchster Reifegrad für REST mit HATEOAS
(sih)