8个版本

0.1.7 2024年5月21日
0.1.6 2024年5月9日
0.1.4 2024年3月22日

#1614 in 数据库接口

Download history 117/week @ 2024-04-30 180/week @ 2024-05-07 4/week @ 2024-05-14 212/week @ 2024-05-21 3/week @ 2024-06-11

每月下载量:655

MIT 许可证

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