5个版本
0.2.2 | 2023年12月22日 |
---|---|
0.2.1 | 2023年12月8日 |
0.1.2 | 2023年12月8日 |
#1151 在 过程宏
89 每月下载量
9KB
119 行
error-http
error-http crate定义了一个宏,该宏为具有用户定义的HTTP响应代码和错误信息的枚举实现了适当的HTTP响应器。
#[derive(ToResponse)]
宏是网络服务器无关的,这意味着一旦定义了枚举,只需切换适当的特性,就会为所选的网络服务器实现响应器。
#[code(XXX)]
定义给定的枚举变体会导致返回 XXX
HTTP代码。任何没有 #[code(XXX)]
的变体将默认为 500
。任何无效的HTTP错误代码将默认为 500
。
#[body(message)]
定义给定的变体会向响应添加一个正文。 body
可以是任何生成 String
或 &str
的表达式。目前,没有选项可以更改内容类型。
支持的Web服务器
此crate仅允许选择可用的实现中的一个。
actix-web
axum
rocket
使用示例
use error_http::ToResponse;
struct SomeStruct {
_a: i32,
_b: u32,
}
#[derive(ToResponse)]
enum Error {
#[code(400)]
First {
_a: i32,
_b: u32,
},
#[code(404)]
#[body("custom error message")]
Blah(SomeStruct, String),
Third,
#[code(99)]
Invalid,
}
未来开发
此crate的可能扩展包括
- 内容类型和JSON体
- 跟踪/日志记录
依赖项
~1.5MB
~36K SLoC