# khttp **Repository Path**: kongweiguang/khttp ## Basic Information - **Project Name**: khttp - **Description**: 基于jdk的httpserver封装的轻量级http服务端,支持native - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-09-25 - **Last Updated**: 2024-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

KHTTP

基于jdk内部的httpserver封装的轻量级http服务端

Apache 2 jdk-8+



### 特点 * 非常轻量,代码简单,大小只有13k * api友好,用的很爽 * 支持http rest风格,sse服务器 * 支持8+以上的所有版本,支持native构建 ### 使用方式 Maven ```xml io.github.kongweiguang kHTTP 0.1 ``` Gradle ``` implementation 'io.github.kongweiguang:KHTTP:0.1' ``` Gradle-Kotlin ``` implementation("io.github.kongweiguang:kHTTP:0.1") ``` ### 例子 ```java public class Test1 { public static void main(String[] args) { KHTTP.of() .executor(Executors.newCachedThreadPool()) //设置静态web地址,默认寻找index.html .web("/Users/kongweiguang/Desktop/hegui/xm/gs") .get("/get", (req, res) -> { System.out.println("req = " + req.params()); res.send("ok"); }) .get("/get_string", (req, res) -> { System.out.println("req = " + req.query()); System.out.println("req = " + req.params()); res.send("ok"); }) .post("/post_json", (req, res) -> { final MultiValueMap params = req.params(); System.out.println("params = " + params); System.out.println("req.str() = " + req.str()); res.send("\"{\"key\":\"i am post res\"}\""); }) .get("/get/one/two", (req, res) -> { System.out.println("req = " + req.path()); res.send("ok"); }) .get("/header", (req, res) -> { final Headers headers = req.headers(); System.out.println("headers = " + headers); res.send("ok"); }) //接受post请求 .post("/post_body", ((req, res) -> { final String str = req.str(); System.out.println("str = " + str); res.send("{\"key\":\"i am post res\"}"); })) .post("/post_form", ((req, res) -> { System.out.println(req.params()); res.send("ok"); })) .get("/timeout", ((req, res) -> { try { Thread.sleep(5000); } catch (InterruptedException e) { throw new RuntimeException(e); } res.send("ok"); })) .get("/error", ((req, res) -> { System.out.println("req.str() = " + req.str()); res.write(500, "error_123456".getBytes()); })) //上传 .post("/post_mul_form", (req, res) -> { final MultiValueMap params = req.params(); System.out.println("params = " + params); final Map> files = req.fileMap(); System.out.println("files = " + files); res.send("ok"); }) //下载文件 .get("/xz", (req, res) -> res.file("k.txt", Files.readAllBytes(Paths.get("D:\\k\\k.txt")))) //sse响应 .get("/sse", new SSEHandler() { @Override public void handler(final Req req, final Res res) { for (int i = 0; i < 3; i++) { try { Thread.sleep(300); } catch (InterruptedException e) { throw new RuntimeException(e); } send(res, SseEvent.of() .id(UUID.randomUUID().toString()) .type("eventType") .data(new Date().toString()) ); } //完成 send(res, SseEvent.of() .id(UUID.randomUUID().toString()) .type("eventType") .data("done") ); //关闭 close(res); } }) .ok(8080); } } ```