Crates.io | json-resp |
lib.rs | json-resp |
version | 0.1.2 |
source | src |
created_at | 2023-02-09 07:30:17.280257 |
updated_at | 2023-02-09 11:22:30.965884 |
description | A utility to generate easy json response/errors |
homepage | |
repository | https://github.com/pooyamb/json-resp/ |
max_upload_size | |
id | 780566 |
size | 24,204 |
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.
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)
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)
}