3 个不稳定版本
0.2.0 | 2021年9月26日 |
---|---|
0.1.1 | 2021年9月25日 |
0.1.0 | 2021年9月25日 |
#25 in #error-response
10KB
126 代码行
awred
为 actix_web::ResponseError
特性提供一个便捷的 derive 宏。
示例
使用枚举
use awred::ResponseError;
use serde::Serialize;
use thiserror::Error;
#[derive(Debug, Error, ResponseError, Serialize)]
pub enum AnError {
#[error("Requested resource was not found")]
#[status_code(NOT_FOUND)]
ResourceNotFound,
#[error("Forbidden: {reason}")]
#[status_code(FORBIDDEN)]
Forbidden { reason: String },
// Internal Server Error
#[error(transparent)]
#[serde(skip)]
IoError(#[from] std::io::Error),
}
使用结构体
#[derive(Debug, Error, ResponseError, Serialize)]
#[error("Invalid username or password")]
#[status_code(BAD_REQUEST)]
pub struct InvalidCredentials;
详情
- 状态码(来自
actix_web::http::StatusCode
)通过#[status_code(...)]
属性指定 - 没有
#[status_code(...)]
属性的变体/结构体将返回空体的 Internal Server Error - 响应体由序列化的错误和消息组成(
error.to_string()
)
错误响应体格式
{
"error": "error",
"message": "error.to_string()",
}
依赖项
~1.5MB
~35K SLoC