欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【Rust笔记】Rocket实现自定义的Responder

【Rust笔记】Rocket实现自定义的Responder

2025/6/28 6:40:07 来源:https://blog.csdn.net/wxgxgp/article/details/143351729  浏览:    关键词:【Rust笔记】Rocket实现自定义的Responder

在Java项目中,我们通常会将响应包装一层来实现统一响应格式,在Rocket中,我们也可以通过实现Responder来返回统一的响应。

res.rs

use crate::api::err::Error;
use rocket::response::Responder;
use rocket::serde::json::json;
use rocket::serde::{Deserialize, Serialize};
use rocket::Request;#[derive(Serialize, Deserialize)]
pub struct Res<'a, T> {code: i32,msg: &'a str,data: Option<T>,
}impl<T> Res<T> {pub fn success(data: T) -> Self {Res {code: 0,msg: "",data: Some(data),}}pub fn error(msg: &str) -> Self {Res {code: 1,msg,data: None,}}pub fn from_error(error: Error) -> Self {Res {code: error.0,msg: error.1,data: None,}}
}impl<'r, 'o: 'r, T: Serialize> Responder<'r, 'o> for Res<T> {fn respond_to(self, request: &'r Request<'_>) -> rocket::response::Result<'o> {json!(&self).respond_to(request)}
}

err.rs

pub type Error<'a> = (i32, &'a str);pub const ANY: Error = (1, "system error");
pub const SOURCE_NOT_EMPTY: Error = (1001, "source is not empty");

然后就可以按具体处理结果返回统一的失败或者成功响应:

  • 成功:
    Res::success(source)
    
  • 失败:
    Res::error("失败原因")
    
  • 自定义失败code:
    Res::from_error((10001,"失败原因"))
    
    或者在err.rs中添加错误类型后:
    Res::from_error(err::SOURCE_NOT_EMPTY)
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词