基于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代码:

rust 复制代码
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代码:

rust 复制代码
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代码:

rust 复制代码
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代码:

rust 复制代码
//请求参数
pub mod req;
//返回参数
pub mod resp;
//请求返回的参数解析
pub mod result_parse;
相关推荐
quantdash_cc3 分钟前
如何检查滚动收益率计算中的窗口长度不足?——从数学定义到 Pandas 实现
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
陈随易6 分钟前
副业搞钱点子之赛事与活动
前端·后端·程序员
衍生星球19 分钟前
【Java 语言】— 方法(方法定义、调用、参数、返回值、方法重载)
java·开发语言·方法
Profile排查笔记20 分钟前
有哪些开源指纹浏览器项目?先核对客户端、内核与许可证
前端·人工智能·后端·自动化
用户144984334647523 分钟前
我为什么做一个开源的 Mac 清理工具
rust
CodeGL25 分钟前
16、Python Web开发
开发语言·前端·python
鶴哥只手遮天27 分钟前
雷达系统与成像仿真:从电磁散射到工程实现-第 1 章 雷达系统的分层架构与指标闭环
后端
喵了几个咪27 分钟前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
王中阳Go28 分钟前
面试官问什么,取决于你简历上写了什么:后端转 Agent 岗的项目准备法
后端·面试·agent
FRing0333 分钟前
JavaScript入门到精通二十九(内置构造函数(Object、Array))
开发语言·前端·javascript