2个版本
0.1.32 | 2023年12月8日 |
---|---|
0.1.31 | 2023年12月7日 |
0.1.23 |
|
0.1.19 |
|
#136 在 HTTP客户端
在 mco-http-rustls 中使用
610KB
12K SLoC
mco-http
- 基于Coroutine库 mco 的HTTP框架,原始代码来自Hyper,我们改进了底层逻辑
- 轻量级,高性能
- 支持http/https服务器(见示例)
- 支持http/https客户端(见示例)
- 支持路由
- 支持拦截器/中间件
example-server
#[deny(unused_variables)]
extern crate mco_http;
use mco_http::route::Route;
use mco_http::server::{Request, Response};
fn hello(req: Request, res: Response) {
res.send(b"Hello World!");
}
fn main() {
let mut route = Route::new();
route.handle_fn("/", |req: Request, res: Response| {
res.send(b"Hello World!");
});
route.handle_fn("/js", |req: Request, res: Response| {
res.send("{\"name\":\"joe\"}".as_bytes());
});
route.handle_fn("/fn", hello);
let _listening = mco_http::Server::http("0.0.0.0:3000").unwrap()
.handle(hello);
println!("Listening on http://127.0.0.1:3000");
}
example-client
extern crate mco_http;
use std::io;
use mco_http::Client;
use mco_http::header::Connection;
fn main() {
let mut url = "http://www.baidu.com".to_string();
let client = Client::new();
let mut res = client.get(&url)
.header(Connection::close())
.send().unwrap();
println!("Response: {}", res.status);
println!("Headers:\n{}", res.headers);
io::copy(&mut res, &mut io::stdout()).unwrap();
}
依赖项
~6–34MB
~536K SLoC