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

参数结构体模块

在src目录下新建params文件夹

在params文件夹下依次新建req.rsresp.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;
相关推荐
覆东流3 小时前
7.Java数组
java·开发语言·后端
码行山野赴时序归途3 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
threerocks4 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
lzhdim4 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert4 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
深漂的华哥4 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
ly76895 小时前
JavaScript 从入门到进阶:核心语法、异步编程与工程化实践
开发语言·javascript·ecmascript
落魄大学生之流水线上谋生计6 小时前
Java锁全面指南:从基础概念到企业级应用
java·开发语言
for_ever_love__6 小时前
python基础语法学习: 闭包
开发语言·python·学习·闭包
ly76896 小时前
Python 全面入门:从核心语法到工程实践
开发语言·python