1 个不稳定版本
0.1.9 | 2022年5月29日 |
---|---|
0.1.8 |
|
#20 in #request-headers
12KB
213 代码行数(不含注释)
Velen
又一个 REST 框架
如何使用
导入
use velen::server::create_server;
use velen::models::server_models::{Request, Response};
创建服务器实例
let mut server = create_server();
注册端点
server.get("/get", get_handler);
server.post("/add", post_handler);
开始监听
server.listen("127.0.0.1", 3333, server_start_handler);
示例处理程序
fn get_handler(_: Request, mut res: Response) {
res.set_status_code(200);
res.set_header("Content-Type", "application/json");
struct GoodResponse {
message: String,
}
impl Display for GoodResponse {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{{\"message\": \"{}\"}}", self.message)
}
}
let good_response = GoodResponse {
message: "I'm good, thank you very much Sir!".to_string(),
};
res.send(good_response.to_string());
}
读取查询参数
req.query_params.get("user_id").unwrap();
读取请求头
req.headers.get("x-custom-header").unwrap();
读取请求体
/* Velen does not deserialize request payload. Use of Serde is recommended. */
req.body;
设置响应状态
res.set_status_code(200);
设置响应头
res.set_header("Content-Type", "application/json");
设置响应负载
res.send("{\"status\":\"ok\"}");
限制
- 未实现 OPTIONS
- 仅支持 application/json,因此不要尝试上传文件
- 在发送响应时,必须在任何
set_header
之前调用set_status_code
。这就是实际向客户端发送响应的方式。 - 无多线程
待办事项
- 修复上述限制
依赖关系
~2.1–3MB
~53K SLoC