#axum #error-response #enums #derive #status-code #message

axum-enum-response

轻松将枚举用作Axum响应

3个版本

0.1.2 2024年2月28日
0.1.1 2024年2月28日
0.1.0 2024年2月28日

#status-code 中排名 6

MIT/Apache

9KB
149

axum-enum-error

MSRV: 1.65.0

轻松将枚举用作Axum响应类型。

示例用法

#[derive(serde::Serialize)]
struct SomeData {
	meow: String,
}

#[derive(EnumIntoResponse)]
enum ErrorResponse {
	#[status_code(UNAUTHORIZED)]
	Unauthorized, // 401, empty body
	#[status_code(FORBIDDEN)]
	#[message("mew")]
	Forbidden, // 403, body = {"message": "mew"}
	#[status_code(BAD_REQUEST)]
	BadRequest(SomeData),
	#[status_code(INTERNAL_SERVER_ERROR)]
	InternalServerError(#[key("error")] String), // 500, body = {"error": STRING},
}

lib.rs:

简单方式使用枚举作为Axum响应 MSRV: 1.65.0

示例用法

#[derive(axum_enum_response::EnumIntoResponse)]
enum ErrorResponse {
   #[status_code(UNAUTHORIZED)]
   Unauthorized, // 401, empty body
   #[status_code(FORBIDDEN)]
   #[message("mew")]
   Forbidden, // 403, body = {"message": "mew"}
   #[status_code(INTERNAL_SERVER_ERROR)]
   InternalServerError(#[key("error")] String), // 500, body = {"error": STRING}
}

您还可以使用任何实现了 serde::Serialize 的结构体作为字段,如下所示

#[derive(serde::Serialize)]
struct SomeData {
    meow: String,
}

#[derive(axum_enum_response::EnumIntoResponse)]
enum ErrorResponse {
    #[status_code(BAD_REQUEST)]
    BadRequest(SomeData), // 400, body = {"meow": STRING}
}

依赖项

~280–730KB
~17K SLoC