216 个版本 (稳定版)
3.0.4 | 2024年7月27日 |
---|---|
3.0.1 | 2024年5月18日 |
3.0.0 | 2024年3月30日 |
2.0.1 | 2024年3月4日 |
0.1.0 |
|
#9 在 HTTP服务器
65,425 每月下载量
用于 160 个大仓 (直接使用67个)
760KB
18K SLoC
Poem 框架
程序就像一首诗,不写下来就无法写诗. ---Dijkstra
使用 Rust 编程语言的一个功能全面且易于使用的 Web 框架。
特性
- 易于使用和性能。
- 最小化泛型使用。
- 快速且灵活的路由。
tower::Service
和tower::Layer
兼容性。- 使用 poem-openapi 编写符合 OAS3 规范的 API 并自动生成文档。
大仓特性
为了避免编译未使用的依赖项,Poem 禁用某些特性,所有特性默认都未启用
特性 | 描述 |
---|---|
server | 服务器和监听器 API(默认启用) |
compression | 支持解压缩请求体和压缩响应体 |
cookie | 支持 Cookie |
csrf | 支持跨站请求伪造 (CSRF) 保护 |
multipart | 支持 Multipart |
native-tls | 支持使用 native-tls 的 TLS 上的 HTTP 服务器 |
openssl-tls | 支持使用 openssl-tls 的 TLS 上的 HTTP 服务器 |
opentelemetry | 支持 opentelemetry |
prometheus | 支持 Prometheus |
redis-session | 支持 RedisSession |
rustls | 支持通过 TLS 的 HTTP 服务器,使用 rustls |
会话 | 支持会话 |
sse | 支持服务器端事件(SSE) |
静态文件 | 支持静态文件端点 |
tempfile | 支持 tempfile |
tower-compat | 为 tower::Layer 和 tower::Service 提供适配器。 |
WebSocket | 支持 WebSocket |
anyhow | 与 anyhow 库集成。 |
eyre06 | 与 eyre 库的 0.6.x 版本集成。 |
i18n | 支持国际化 |
acme-native-roots | 支持 ACME(自动证书管理环境) |
acme-webpki-roots | 支持使用 webpki TLS 根而非本地 TLS 根的 ACME |
tokio-metrics | 与 tokio-metrics 库集成。 |
embed | 与 rust-embed 库集成。 |
xml | 与 quick-xml 库集成。 |
yaml | 与 serde-yaml 库集成。 |
requestid | 将唯一 ID 与每个传入请求关联 |
安全性
此库使用 #![forbid(unsafe_code)]
确保所有内容都在 100% 安全的 Rust 中实现。
示例
use poem::{get, handler, listener::TcpListener, web::Path, Route, Server};
#[handler]
fn hello(Path(name): Path<String>) -> String {
format!("hello: {}", name)
}
#[tokio::main]
async fn main() -> Result<(), std::io::Error> {
let app = Route::new().at("/hello/:name", get(hello));
Server::new(TcpListener::bind("0.0.0.0:3000"))
.run(app)
.await
}
更多示例可以在 这里 找到。
MSRV
此库支持的最低 Rust 版本是 1.75.0
。
贡献
🎈 感谢您的帮助,使项目得到改进!我们非常高兴有您加入!
许可
根据您的选择,此库受以下任一许可协议的约束:
- Apache License, Version 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确说明,否则您提交给 Poem 的任何有意贡献均应按照 Apache 许可协议进行许可,没有任何附加条款或条件。
依赖项
~13–34MB
~602K SLoC