基于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;
相关推荐
Frank_refuel12 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
Wang's Blog13 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_9620715713 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境14 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
\光辉岁月/14 小时前
5.java-数组
java·开发语言
Java后端的Ai之路14 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
谢亮_vipxieliang15 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
时间的拾荒人15 小时前
Qt 多线程详解:从 QThread 到实战
开发语言·qt·面试
狼爷15 小时前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
郑州光合科技余经理15 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程