14 stable releases
new 1.3.2 | Nov 2, 2024 |
---|---|
1.2.1 | Jun 22, 2022 |
1.2.0 | Dec 3, 2021 |
1.1.3 | Nov 25, 2021 |
1.0.3 | Aug 31, 2021 |
#2415 in Parser implementations
Used in 2 crates
17KB
210 lines
rocketjson
Crate for working with Json and Rocket.
Ultimately the goal is to have validated Structs enter and leave the endpoint as Json
while having everything happen in the background.
Documentation
Documentation is on docs.rs
Example
#[macro_use] extern crate rocket;
#[derive(serde::Deserialize, validator::Validate, rocketjson::JsonBody)]
pub struct RegisterRequest {
#[validate(length(min = 1))]
username: String
}
#[derive(serde::Serialize)]
pub struct RegisterResponse {
message: String
}
#[post("/register", data="<data>")]
pub fn register(data: RegisterRequest) -> rocketjson::ApiResponse<RegisterResponse> {
rocketjson::ApiResponse::new(rocket::http::Status::Ok, RegisterResponse { message: format!("Welcome {}", data.username) })
}
#[launch]
fn rocket() -> _ {
rocket::build()
.mount("/", routes![register]).
register("/", vec![rocketjson::error::get_catcher()])
}
- Input
{
"username": "testuser"
}
- Output 200 OK
{
"message": "Welcome testuser"
}
- Input
{
"username": ""
}
- Output 400 Bad Request
{
"username": [
{
"code": "length",
"message": null,
"params": {
"value": "",
"min": 1
}
}
]
}
License
The license can be chosen to be either of the following:
Dependencies
~20–55MB
~1M SLoC