6个版本
0.1.5 | 2021年1月29日 |
---|---|
0.1.4 | 2020年11月20日 |
0.1.3 | 2020年10月21日 |
#542 在 HTTP服务器
每月127次下载
32KB
533 行
Tide Fluent Routes —
Tide Fluent Routes是一个定义Tide HTTP框架路由的流畅API。目前它支持设置路径,您可以在路由树中的任何位置集成中间件,并且可以集成端点。一些使用Tide原生路由可以实现的功能(目前)尚不可行;
- Tide前缀路由未实现
- 不能嵌套Tide服务器
要使用此功能,您可以导入Tide Fluent Routes并使用use tide_fluent_routes::prelude::* 它在Tide::Server上引入了
register扩展方法,以注册来自RouteBuilder的路由。RouteBuilder可以使用
route()
方法初始化。您可以注册简单的端点,如下所示;
use tide_fluent_routes::prelude::*;
let mut server = tide::Server::new();
server.register(
root()
.get(endpoint)
.post(endpoint));
流畅路由遵循Tide的约定。所有HTTP动词都支持相同的方式。路径可以使用at
扩展,但此方法需要一个路由闭包,允许以树的形式构建路由。可以定义完整的路由树,如下所示;
server.register(
root()
.get(endpoint)
.post(endpoint)
.at("api/v1", |route| route
.get(endpoint)
.post(endpoint)
)
.at("api/v2", |route| route
.get(endpoint)
.post(endpoint)
)
);
这消除了为路由树的局部部分引入变量的需要。
包括在其他函数中定义的路由看起来也非常自然,这使得从其他地方定义的较小树组合大型路由树变得容易;
fn v1_routes(routes: RouteSegment<()>) -> RouteSegment<()> {
routes
.at("articles", |route| route
.get(endpoint)
.post(endpoint)
.at(":id", |route| route
.get(endpoint)
.put(endpoint)
.delete(endpoint)
)
)
}
fn v2_routes(routes: RouteSegment<()>) -> RouteSegment<()> {
routes
.at("articles", |route| route
.get(endpoint))
}
server.register(
root()
.get(endpoint)
.post(endpoint)
.at("api/v1", v1_routes)
.at("api/v2", v2_routes));
在使用纯Tide路由时,很难看到哪些中间件对哪些端点是活动的。向树中添加中间件很容易,并且中间件的应用位置非常清晰;
server.register(
root()
.get(endpoint)
.post(endpoint)
.at("api/v1", |route| route
.with(dummy_middleware, |route| route
.get(endpoint)
)
.post(endpoint)
)
.at("api/v2", |route| route
.get(endpoint)
.get(endpoint)
),
);
可以使用serve_dir
提供目录服务,这与正常Tide路由相同,流畅路由添加了serve_file
方便方法以提供单个文件。
use tide_fluent_routes::prelude::*;
use tide_fluent_routes::fs::ServeFs;
let mut server = tide::Server::new();
server.register(
root()
.serve_file("files/index.html")
.at("img", |r| r
.serve_dir("files/images")
)
);
版本:0.1.2
许可协议
在以下任一许可协议下授权
- Apache许可证,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义的,您有意提交以包含在工作中的任何贡献,将如上双许可,不附加任何额外条款或条件。
依赖项
~10–21MB
~313K SLoC