当前位置: 首页 > web >正文

基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(二)

  • 参数结构体模块

在src目录下新建params文件夹

在params文件夹下依次新建req.rs、resp.rs、result_parse.rs、mod.rs

目录结构如下:

project

|—src

        |—params   //封装参数结构体模块

                 |—req.rs    //封装请求参数结构体

                 |—resp.rs  //封装返回数据结构体

                 |—result_parse.rs  //解析返回参数结构体

                 |—mod.rs    //导出模块       

req.rs代码:


use rocket::serde::{Deserialize,Serialize};
use rocket::FromForm;
use rocket::fs::TempFile;//注册请求参数
#[derive(Deserialize,Serialize,Debug)]
#[serde(crate = "rocket::serde")]
pub struct Userparam {pub uname: String,pub id:String,
}//xxx请求参数
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct Xxxparam<'r> {pub xxxvalue: &'r str,pub checktime: &'r str,pub uid: &'r str,pub id:&'r str,
}//notice请求参数
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct Noticeparam<'r> {pub content: &'r str,pub checktime: &'r str,pub noticetime: &'r str,pub uid: &'r str,pub id:&'r str,
}//yyy请求参数
#[derive(Deserialize)]
#[serde(crate = "rocket::serde")]
pub struct Yyyparam<'r> {pub yyyvalue: &'r str,pub checktime: &'r str,pub uid: &'r str,pub id:&'r str,
}//ocr识别请求参数
#[derive(Serialize,Debug)]
#[serde(crate = "rocket::serde")]
pub struct AccessToken {pub img_url:String,}//上传图片参数
#[derive(FromForm)]
pub struct UploadImg<'a>{pub file:TempFile<'a>,pub name:&'a str
}

resp.rs代码:

use rocket::serde::Serialize;//封装公共返回插入状态数据
#[derive(Serialize)]
#[serde(crate = "rocket::serde")]
pub struct Resp { pub code:i8,pub message:String,}//封装注册成功后返回状态数据
#[derive(Serialize)]
#[serde(crate = "rocket::serde")]
pub struct Regresp { pub code:i8,pub message:String,pub uid:String,}//封装user返回数据#[derive(Serialize)]#[serde(crate = "rocket::serde")]pub struct Listuser { pub uname: String,pub id:String,}//封装xxx返回数据
#[derive(Serialize)]
#[serde(crate = "rocket::serde")]
pub struct Listxxx { pub xxxvalue: String,pub checktime: String,pub uid: String,pub id:String,}//封装notice返回数据#[derive(Serialize)]#[serde(crate = "rocket::serde")]pub struct Listnotice { pub content: String,pub checktime: String,pub noticetime: String,pub uid: String,pub id:String,}//封装yyy返回数据#[derive(Serialize)]#[serde(crate = "rocket::serde")]pub struct Yyyliver { pub yyyvalue: String,pub checktime: String,pub uid: String,pub id:String,}

resp_parse.rs代码:


use std::collections::HashMap;use rocket::serde::{Deserialize, Serialize};//请求微信token返回的结构体
#[derive(Deserialize,Serialize,Debug)]
#[serde(crate = "rocket::serde")]
pub struct WechatToken{pub access_token:String,expires_in:i32
}//请求ocr解析返回的一级结构体
#[derive(Deserialize,Serialize,Debug)]
#[serde(crate = "rocket::serde")]
pub struct Ocr1{errcode:i32,errmsg:String,pub items:Vec<Ocr2>
}//ocr解析的items项二级结构体
#[derive(Deserialize,Serialize,Debug)]
#[serde(crate = "rocket::serde")]
pub struct Ocr2{pub text:String,pos:HashMap<String,HashMap<String,i64>>
}

mod.rs代码:

//请求参数
pub mod req;
//返回参数
pub mod resp;
//请求返回的参数解析
pub mod result_parse;

http://www.xdnf.cn/news/6666.html

相关文章:

  • Expo项目在本地打包apk的问题
  • Vue主题色切换实现方案(CSS 变量 + 类名切换)
  • 【前端】[vue3] [uni-app]使用 vantUI 框架
  • 使用 OpenCV 将图像中标记特定颜色区域
  • 黑马k8s(九)
  • day 26
  • Python训练营打卡 Day27
  • Java 中使用 Redis 实现消息订阅/发布
  • 三极管知识
  • 根据台账批量制作个人表
  • 5G-A和未来6G技术下的操作系统与移动设备变革:云端化与轻量化的发展趋势
  • 【Pandas】pandas DataFrame kurt
  • 如何让 Google 收录 Github Pages 个人博客
  • go封装将所有数字类型转浮点型,可设置保留几位小数
  • AG-UI 协议:重构多模态交互,开启智能应用新纪元
  • C42-作业练习
  • 光谱相机的空间分辨率和时间分辨率
  • MinIO 开源的分布式文件服务器
  • 三格电子上新了——IO-Link系列集线器
  • 【C++】 —— 笔试刷题day_29
  • el-breadcrumb 面包屑第一项后面怎么写没有分隔符
  • 【实测有效】Edge浏览器打开部分pdf文件显示空白
  • 线程池(ThreadPoolExecutor)实现原理和源码细节是Java高并发面试和实战开发的重点
  • 文件系统交互实现
  • css:无限滚动波浪线
  • Linux du 命令终极指南:从基础到精通
  • 详解具身智能开源数据集:RH20T
  • Maven使用详解:Maven的概述(二)
  • 单片机-STM32部分:18、WiFi模组
  • 真题卷001——算法备赛