10 个稳定版本
1.2.1 | 2022 年 6 月 22 日 |
---|---|
1.2.0 | 2021 年 12 月 3 日 |
1.1.3 | 2021 年 11 月 25 日 |
1.1.2 | 2021 年 10 月 8 日 |
1.0.1 | 2021 年 8 月 31 日 |
#63 in #server-api
每月 33 次下载
在 rocketjson 中使用
23KB
302 行
rocketjson
用于处理 Json 和 Rocket 的 crate。
最终目标是使经过验证的 Structs 以 Json 格式进入和离开端点,同时所有操作都在后台完成。
文档
文档位于 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"
}
- 输出 200 OK
{
"message": "Welcome testuser"
}
- 输入
{
"username": ""
}
- 输出 400 Bad Request
{
"username": [
{
"code": "length",
"message": null,
"params": {
"value": "",
"min": 1
}
}
]
}
许可证
许可证可以是以下之一
依赖关系
~19–51MB
~881K SLoC