#thiserror #error-response #actix-web #derive #automatic #extend #proper

actix-web-thiserror-derive

实现 #[derive(ResponseError)]

10个版本

0.2.7 2024年6月16日
0.2.6 2024年6月14日
0.2.1 2024年3月10日
0.2.0 2023年6月13日
0.1.7 2023年4月26日

#11 in #proper

Download history 3010/week @ 2024-04-17 2598/week @ 2024-04-24 2626/week @ 2024-05-01 4432/week @ 2024-05-08 3611/week @ 2024-05-15 2160/week @ 2024-05-22 2408/week @ 2024-05-29 2464/week @ 2024-06-05 2837/week @ 2024-06-12 3834/week @ 2024-06-19 3046/week @ 2024-06-26 2433/week @ 2024-07-03 3743/week @ 2024-07-10 1755/week @ 2024-07-17 4542/week @ 2024-07-24 2698/week @ 2024-07-31

12,962 每月下载量
actix-web-thiserror 中使用

MIT 许可

20KB
443

actix-web-thiserror

License Contributors GitHub Repo stars crates.io

一个扩展 thiserror crate 功能以自动返回适当的 actix-web 响应的crate。

文档

错误定义

use actix_web_thiserror::ResponseError;
use thiserror::Error;

#[derive(Debug, Error, ResponseError)]
pub enum Base64ImageError {
  #[response(reason = "INVALID_IMAGE_FORMAT")]
  #[error("invalid image format")]
  InvalidImageFormat,
  #[response(reason = "INVALID_STRING")]
  #[error("invalid string")]
  InvalidString,
}

错误实现

pub async fn error_test() -> Result<HttpResponse, Error> {
  Err(Base64ImageError::InvalidImageFormat)?
}

错误响应

reason 是一个字符串,可以根据需要以某种形式提供给客户端以解释错误。这里是一个可以本地化的枚举。

注意: 此响应已通过 ResponseTransform 格式化。要指定自定义的 ResponseTransform,实现 ResponseTransform 并在您的 derive 下添加 #[response)]

{
    "result": 0,
    "reason": "INVALID_IMAGE_FORMAT"
}

错误记录

当错误通过HTTP响应返回时,错误文本会自动打印到日志中。

Apr 23 02:19:35.211 ERROR Response error: invalid image format
    Base64ImageError(InvalidImageFormat), place: example/src/handler.rs:5 example::handler

依赖项

~15–26MB
~465K SLoC