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

ops/2024/10/30 16:59:53/

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

res.rs

rust">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

rust">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");

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

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

http://www.ppmy.cn/ops/129634.html

相关文章

AI与低代码的碰撞:企业数字化转型的新引擎

引言 在当今的商业环境中&#xff0c;企业数字化转型已从选择题变成了必答题。面对日益复杂的市场竞争和不断变化的客户需求&#xff0c;传统的开发模式常常显得力不从心——开发周期冗长、技术门槛高、成本居高不下&#xff0c;企业很难快速响应市场变化。而在这种背景下&…

基于深度学习的实时库存管理

基于深度学习的实时库存管理在电商、零售、制造业和物流等多个行业中具有极高的应用价值。深度学习模型可以帮助企业实时监测库存动态、优化库存补充决策、预测需求波动&#xff0c;确保库存水平稳定且适合实际需求&#xff0c;从而降低成本、提高客户满意度。以下从核心技术、…

httpd服务

文章目录 1、搭建一个网络yum源2、基于域名访问的虚拟主机3、基于端口来访问域名4、搭建个人网站5、加密访问显示自定义网页内容 1、搭建一个网络yum源 [roottest01 conf.d]# cat repo.conf <virtualhost *:80>documentroot /var/www/html/ServerName 10.104.43.154ali…

服务器文件访问协议

服务器文件访问协议 摘要NFS、CIFS、SMB概述SMBWindows SMBLinux SambaPython SMB NFS 摘要 本篇博客参考网上文档和博客&#xff0c;对基于网络的服务器/主机的文件访问、共享协议进行简要总结&#xff0c;完整内容将会不断更新&#xff0c;以便加深理解和记忆 NFS、CIFS、S…

【力扣 + 牛客 | SQL题 | 每日4题】牛客大厂面试真题W3,W10

1. 牛客大厂面试真题SQLW3&#xff1a;分析客户逾期情况 1.1 题目&#xff1a; 描述 有贷款信息表&#xff1a;loan_tb&#xff08;agreement_id&#xff1a;合同id&#xff0c;customer_id&#xff1a;客户id&#xff0c;loan_amount&#xff1a;贷款金额&#xff0c;pay_a…

Flutter实战短视频课程

1、课程导学 一套代研运行多蜡 体州一致&#xff0c;目胜能优昇 未来大趋势 不改交原生项目的基础上&#xff0c;扩展Flutter能力 Flutter原生灵话切涣 0入侵 最简单、最通用 最新Flutter 3,x新特性讲解 大量flutter官方组件和api学习 最常用的第三方库使用及原理解析 自研组…

R_机器学习——常用函数方法汇总

1.rep() rep()是R语言中的一个函数&#xff0c;用于创建重复的向量或矩阵。 rep(x, times, each, length.out) x&#xff1a;要重复的向量或矩阵。这可以是一个数字、字符、列表、因子等。times&#xff1a;重复的次数&#xff0c;可以是一个整数或向量。如果是一个整数&#…

关于我、重生到500年前凭借C语言改变世界科技vlog.12——深入理解指针(2)

文章目录 1.数组名与地址1.1 arr1.2 sizeof(arr)1.3 &arr 2.指针访问数组3.一维数组传参本质4.指针数组5.二级指针希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 1.数组名与地址 有这么一个数组&#xff0c;数组名为 arr int arr[10] {1…