3个版本
0.1.2 | 2023年2月9日 |
---|---|
0.1.1 | 2023年2月9日 |
0.1.0 | 2023年2月9日 |
#1369 在 HTTP服务器
15KB
347 行
Json-resp
此crate提供API的成功响应和错误响应,以及用于简化响应和openapi文档生成(具有openapi
功能)的实用工具和宏。(目前仅支持axum)
查看示例以获取完整说明。
成功
成功响应看起来像
{
"status": 200,
"content": C, // C should implement serde::Serialize
"meta": M // M should implement serde::Serialize
}
可以使用构建器模式生成
JsonResponse::with_content(content).meta(meta)
错误
错误响应看起来像
{
"status": 404,
"code": "error code here",
"hint": "do something", // Optional
"content": C // C should implement serde::Serialize
}
可以使用derive宏生成,同时也会生成openapi文档。
#[derive(JsonError)]
enum MyAppErrors{
// status can be either a number or http::StatusCode
#[json_error(request, status=StatusCode::NOT_FOUND, code="does-not-exist", hint="some hint")]
DoesNotExist,
#[json_error(request, status=409, code="does-not-exist")]
Validation(ValidationErrors),
#[json_error(internal)]
SomethingWentWrong
}
然后在您的处理程序中使用它
async fn my_handler() -> Result<MyResponse, MyAppErrors>{
Err(MyAppErrors::DoesNotExist)
}
依赖项
~7–9.5MB
~175K SLoC