لقد كنت أعمل في مشروع هواية منذ بضعة أشهر، وهو عبارة عن بوابة API مرخصة من معهد ماساتشوستس للتكنولوجيا (MIT) ومصممة لتكون مستقلة عن أي بائع معين. أعتقد أن الأمور تسير على ما يرام، لأكون صادقًا. مع نمو قاعدة التعليمات البرمجية الخاصة بي، رأيت فرصة للتحسين حول النواة، ألا وهي خادم HTTP. بدا أن تحويل خادم HTTP الأساسي إلى إطار عمل صغير خاص به كان بمثابة حل منطقي (وتمرين تعليمي رائع!).
نقدم لك Kindling، الوقود الذي سيشعل تطبيقك. يعتمد Kindling على مكتبة Java 21 القياسية، دون أي تبعيات. لقد تم تصميمه ليكون قابلاً للبرمجة، دون استخدام أي سحر.
إليك Hello World البسيط مع 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"); } }
يؤدي إرسال طلب CURL إلى الخادم إلى هذه الاستجابة:
> 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!
...رائع جدًا، أليس كذلك؟
هناك بعض الأخطاء، مثل فقدان طول المحتوى في الاستجابة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3