# 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服务端
### 特点
* 非常轻量,代码简单,大小只有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);
}
}
```