8个版本
0.1.7 | 2024年5月21日 |
---|---|
0.1.6 | 2024年5月9日 |
0.1.4 | 2024年3月22日 |
#1614 in 数据库接口
每月下载量:655
63KB
206 代码行
Axum Responses
Axum响应和结果的简单使用方法
示例
// Asume we have a mongodb database connection and a user model
// A simple service that returns a generic or an error
use bson::
use axum::Json;
use serde_json::{Value, to_value};
use axum_responses::{AxumResult, HttpResponse, AxumResponse};
#[derive(Debug, Serialize, Deserialize)]
struct LoginData {
email: String,
password: String
}
async fn get_user_by_id(filter: doc) -> AxumResult<User> {
let user = User::find_by_id(filter).await
.map_err(|_| HttpResponse::INTERNAL_SERVER_ERROR)?
;
Ok(user)
}
// And then we can use it in a simple login controller like this
async fn login_controller(Json(body): Json<LoginData>) -> AxumResponse {
let filter = doc! { "email": body.email };
let user = get_user_by_id(filter).await?;
if user.password != body.password {
return Err(HttpResponse::UNAUTHORIZED)
}
Ok(HttpResponse::JSON(
200, "OK", "user", user.to_value().unwrap_or(Value::Null))
)
}
依赖项
~10–20MB
~292K SLoC