Crates.io | rocketjson_macro |
lib.rs | rocketjson_macro |
version | |
source | src |
created_at | 2021-08-31 20:56:17.377857 |
updated_at | 2024-11-02 14:25:52.914913 |
description | Crate for working with Json and Rocket |
homepage | |
repository | https://github.com/Nis5l/rocketjson |
max_upload_size | |
id | 445297 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
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 is on docs.rs
#[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()])
}
{
"username": "testuser"
}
{
"message": "Welcome testuser"
}
{
"username": ""
}
{
"username": [
{
"code": "length",
"message": null,
"params": {
"value": "",
"min": 1
}
}
]
}
The license can be chosen to be either of the following: