15 个不稳定版本 (3 个破坏性更新)
使用旧的 Rust 2015
0.3.7 | 2019 年 4 月 10 日 |
---|---|
0.3.6 | 2019 年 3 月 13 日 |
0.3.5 | 2019 年 2 月 25 日 |
0.3.3 | 2018 年 11 月 18 日 |
0.0.0 | 2018 年 3 月 11 日 |
#1298 in HTTP 服务器
每月 380 次下载
在 5 crates 中使用
430KB
11K SLoC
塔-web
一个专注于去除样板代码的 Rust Web 框架。
塔-web 是
你好世界
#[macro_use]
extern crate tower_web;
extern crate tokio;
use tower_web::ServiceBuilder;
use tokio::prelude::*;
/// This type will be part of the web service as a resource.
#[derive(Clone, Debug)]
struct HelloWorld;
/// This will be the JSON response
#[derive(Response)]
struct HelloResponse {
message: &'static str,
}
impl_web! {
impl HelloWorld {
#[get("/")]
#[content_type("json")]
fn hello_world(&self) -> Result<HelloResponse, ()> {
Ok(HelloResponse {
message: "hello world",
})
}
}
}
pub fn main() {
let addr = "127.0.0.1:8080".parse().expect("Invalid address");
println!("Listening on http://{}", addr);
ServiceBuilder::new()
.resource(HelloWorld)
.run(&addr)
.unwrap();
}
概览
塔-web 致力于将所有 HTTP 概念与应用程序逻辑解耦。您定义一个 "普通的 Rust 方法" (PORM?)。此方法仅接受其完成所需的数据,并返回一个表示响应的结构体。塔-web 做其余的工作。
impl_web
宏会查看定义并生成粘合代码,使方法能够响应 HTTP 请求。
入门指南
许可证
本项目受 MIT 许可证 的许可。
贡献
除非您明确声明,否则您故意提交给 tower-web
的任何贡献,都应按 MIT 许可证许可,无任何附加条款或条件。
依赖项
~21MB
~402K SLoC