[actix-380玩彩网官网入口

use actix_http::header::tryintoheaderpair;
use actix_http::statuscode;
use actix_web::http::header::contenttype;
use actix_web::httpresponse;
use serde::{deserialize, serialize};
// 自定义 response
#[derive(deserialize, serialize, debug)]
pub(crate) struct r<t> {
    pub(crate) code: i32,
    pub(crate) msg: string,
    pub(crate) data: option<t>,
}
// 在 r 结构体附近定义辅助方法
impl<t> r<t>
where
    t: serialize,
{
    // 创建成功的响应
    pub fn success(data: t) -> httpresponse {
        let r: r<t> = r {
            code: statuscode::ok.as_u16() as i32,
            msg: "请求成功".to_string(),
            data: some(data),
        };
        httpresponse::build(statuscode::ok)
            .insert_header(contenttype::json())
            .json(r)
    }
    // 创建失败的响应
    pub fn err() -> httpresponse {
        let r: r<()> = r {
            code: statuscode::internal_server_error.as_u16() as i32,
            msg: "服务器异常".to_string(),
            data: none,
        };
        httpresponse::build(statuscode::ok)
            .insert_header(contenttype::json())
            .json(r)
    }
    // 创建失败的响应
    pub fn err_msg(msg: string) -> httpresponse {
        let r: r<()> = r {
            code: statuscode::internal_server_error.as_u16() as i32,
            msg,
            data: none,
        };
        httpresponse::build(statuscode::ok)
            .insert_header(contenttype::json())
            .json(r)
    }
    // 创建自定义状态码的响应
    pub fn custom(code: i32, msg: string, data: option<t>) -> httpresponse {
        let r: r<t> = r {
            code,
            msg,
            data,
        };
        httpresponse::build(statuscode::ok)
            .insert_header(contenttype::json())
            .json(r)
    }
}
#[post("/api/v1/deposits/list")]
async fn deposits_list(pool: web::data<pgpool>) -> impl responder {
    let list = deposit::list(&pool).await;
    match list {
        ok(list) => r::success(list),
        err(e) => {
            // 处理错误,例如返回一个错误响应
            eprintln!("error querying deposits: {:?}", e);
            // 假设 r::error 是你用来处理错误响应的方法
            return r::<string>::err_msg("failed to fetch deposits".to_string());
        }
    }
}
讨论数量: 2

这种怎么样?

5个月前
oraoto

自己写个 struct 然后实现 responder ?

3个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图