#json-response #response #json #axum #generate-json #web

json-resp-derive

生成简单的json响应/错误的实用工具

2个版本

0.1.1 2023年2月9日
0.1.0 2023年2月9日

#39 in #generate-json


json-resp中使用

MIT/Apache

32KB
748 代码行

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
}

并且可以使用派生宏生成,还将生成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)
}

依赖关系

~1.5MB
~35K SLoC