Ich arbeite seit einigen Monaten an einem Hobbyprojekt, einem MIT-lizenzierten API-Gateway, das so konzipiert ist, dass es von einem bestimmten Anbieter unabhängig ist. Ehrlich gesagt denke ich, dass es ganz gut läuft. Da meine Codebasis gewachsen ist, habe ich Möglichkeiten für Verbesserungen rund um den Kern, nämlich den HTTP-Server, gesehen. Den Kern-HTTP-Server in ein eigenes Mikro-Framework auszugliedern, schien eine logische Lösung (und eine großartige Lernübung!) zu sein.
Wir stellen Ihnen Kindling vor, den Treibstoff, der Ihre Anwendung in Schwung bringt. Kindling basiert auf der Standardbibliothek Java 21, ohne Abhängigkeiten. Es ist so konzipiert, dass es ohne den Einsatz von Magie programmierbar ist.
Hier ist ein einfaches Hello World mit Kindling:
package io.kerosenelabs.kindling; import java.nio.file.Path; import java.util.HashMap; import io.kerosenelabs.kindling.constant.HttpMethod; import io.kerosenelabs.kindling.constant.HttpStatus; import io.kerosenelabs.kindling.exception.KindlingException; import io.kerosenelabs.kindling.handler.RequestHandler; public class Main { public static void main(String[] args) throws KindlingException { KindlingServer server = KindlingServer.getInstance(); // test request handler server.installRequestHandler(new RequestHandler() { /** * Tell the server what type of request this handler can work with */ @Override public boolean accepts(HttpMethod httpMethod, String resource) throws KindlingException { return httpMethod.equals(HttpMethod.GET) && resource.equals("/"); } /** * Do your business logic here */ @Override public HttpResponse handle(HttpRequest httpRequest) throws KindlingException { return new HttpResponse.Builder() .status(HttpStatus.OK) .headers(new HashMap() { { put("Content-Type", "text/html"); } }) .content("Hello from Kindling!
") .build(); } }); // serve our server server.serve(8443, Path.of("mykeystore.p12"), "password"); } }
Das Senden einer CURL-Anfrage an den Server führt zu dieser Antwort:
> GET / HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.88.1 > Accept: */* > * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): Hello from Kindling!
...ziemlich cool, oder?
Es gibt ein paar Fehler, zum Beispiel fehlt die Inhaltslänge in der Antwort.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3