Je travaille depuis quelques mois sur un projet de loisir, une passerelle API sous licence MIT conçue pour être indépendante de tout fournisseur particulier. Je pense que ça se passe plutôt bien, pour être honnête. Au fur et à mesure que ma base de code s'est développée, j'ai vu des opportunités d'amélioration autour du noyau, à savoir le serveur HTTP. Intégrer le serveur HTTP principal dans son propre micro-framework semblait être une solution logique (et un excellent exercice d'apprentissage !).
Présentation de Kindling, le carburant qui enflammera votre application. Kindling est basé sur la bibliothèque standard Java 21, sans dépendances. Il est conçu pour être programmable, sans recourir à aucune magie.
Voici un simple Hello World avec 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"); } }
L'envoi d'une requête CURL au serveur donne cette réponse :
> 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!
... plutôt cool, non ?
Il y a quelques bugs, comme Content-Length manquant dans la réponse.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3