Web-Framework: Ktor 1.3 liefert HttpStatement und bessere JSON-integration
Die neue Version von Ktor bietet zwar nur wenige Änderungen, allerdings müssen Entwickler ihre Applikationen dank einiger Breaking Changes anpassen.
(Bild: deepadesigns/Shutterstock.com)
- Björn Bohn
Der Toolhersteller JetBrains hat Version 1.3 von Ktor veröffentlicht, einem Framework zur Entwicklung asynchroner Client- und Serveranwendungen. Das Release führt eine neue HttpStatement-Klasse ein, da HttpResponse künftig nicht mehr das Closeable-Interface automatisch implementiert. Das wird als "Breaking Change" bezeichnet, Ktor 1.3 ist also nicht rückwärtskompatibel. Darüber hinaus hat JetBrains das Zusammenspiel mit JSON auf Client- und Serverseite überarbeitet. Ziel für die nächsten Releases soll es sein, die auf der JVM laufende Serverseite auch Multiplattform-fähig zu machen.
Die Neuerungen im Detail
Bislang mussten Entwickler den HttpResponse-Befehl ausdrücklich schließen. Das führte häufig zu Problemen, da Nutzer es gerne vergessen haben – eine schlechte Performance war die Folge. Nun implementiert HttpResponse das Closeable-Interface nicht mehr. Wer Streaming oder große Antworten in seinen Applikationen erwartet, muss künftig auf die neue HttpStatement-Klasse setzen.
DarĂĽber hinaus bietet der HTTP-Client einen experimentellen Support fĂĽr eine Proxy-Konfiguration. Allerdings ist diese Neuerung nur fĂĽr die JVM und native Zielplattformen verfĂĽgbar, nicht aber fĂĽr JavaScript. Um eine Proxy zu konfigurieren, mĂĽssen Entwickler folgenden Quellcode nutzen:
HttpClient {
engine {
proxy = ProxyBuilder.http("http://proxy-host:3128")
}
}
In puncto JSON können Entwickler jetzt mit JsonFeature Collection-Typen ohne zusätzliche Konfiguration handhaben. Dadurch gelten die Funktionen setMapper, setListMapper und register nun als veraltet. Außerdem können Anwender mit der kotlinx.serialization-DSL (Domain-specific Language) einen JSON-Body konstruieren.
Einen detaillierten Überblick über die Neuerungen bietet JetBrains in einem Blogbeitrag. Wer von älteren Versionen auf 1.3 umsteigt, muss vor allem die close-Aufrufe von HttpResponse beseitigen.
(bbo)