Skip to content

pooyamb/json-resp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Json-resp

This crate provides a success and an error response for Apis, with utilities and macros to ease the generation of responses and openapi docs(with openapi feature).(Only axum supported right now)

Check out the examples for full explanation.

Success

The success response looks like:

{
    "status": 200,
    "content": C, // C should implement serde::Serialize
    "meta": M // M should implement serde::Serialize
}

And can be produces with builder pattern:

JsonResponse::with_content(content).meta(meta)

Errors

The error response looks like:

{
    "status": 404,
    "code": "error code here",
    "hint": "do something", // Optional
    "content": C // C should implement serde::Serialize
}

And can be produces with a derive macro, openapi docs will be generated too.

#[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
}

And just use it in your handlers:

async fn my_handler() -> Result<MyResponse, MyAppErrors>{
    Err(MyAppErrors::DoesNotExist)
}

About

A utility to generate easy json response/errors

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages