13 个版本
0.1.12 | 2021年6月13日 |
---|---|
0.1.11 | 2021年6月1日 |
0.1.10 | 2021年5月31日 |
0.1.5 | 2021年4月26日 |
0.1.1 | 2020年10月12日 |
#6 in #conn
每月 37 次下载
29KB
560 行
Confetti 🎉
与 CloudFlare Workers 玩得开心
🐑 使用 wrangler generate
克隆此模板
在这里了解更多关于 wrangler generate
的信息。
wrangler generate wasm-worker https://github.com/pinatasoftware/confetti-template.git
cd wasm-worker
🎉 Confeti 帮助处理请求
路由
每个路由都有一个模式和一个中间件列表
Route {
pattern: (Method::Get, "/"),
middlewares: vec![fetch_session, validate_user, home],
},
中间件一个接一个地运行。如果任何一个中间件停止,则立即发送响应,所有剩余的中间件将不会运行
中间件
中间件是接收并返回 Conn 的异步函数
pub async fn hello(conn: Conn) -> Conn {
let mut headers = conn.resp_headers;
headers.insert("Content-Type".to_string(), "text/html".to_string());
let content = "<h1>Hello World from Confetti</h1>";
return Conn {
resp_headers: headers,
resp_body: content.to_string(),
status: 200,
..conn
};
}
Conn 结构体
pub struct Conn {
// Request
pub host: String,
pub method: Method,
pub port: u16,
pub scheme: String,
pub path: String,
pub query_string: String,
pub req_body: String,
pub req_headers: HashMap<String, String>,
pub cf: HashMap<String, String>,
// Response
pub resp_body: String,
pub resp_headers: HashMap<String, String>,
pub status: u16,
// Connection
pub assigns: HashMap<String, String>,
pub halted: bool,
}
🛠️ 使用 wasm-pack build
构建
wasm-pack build
🔬 使用 wasm-pack test
在无头浏览器中测试
wasm-pack test --headless --firefox
依赖
~10–14MB
~262K SLoC