#error #enums #axum #rocket #actix-web #http-error #http-response

macro error-http

将错误枚举与HTTP状态码相关联的过程宏

5个版本

0.2.2 2023年12月22日
0.2.1 2023年12月8日
0.1.2 2023年12月8日

#1151过程宏

Download history 18/week @ 2024-07-06 71/week @ 2024-07-27

89 每月下载量

MIT 许可证

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