基于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;
相关推荐
遨游DATA17 分钟前
Spring Boot 启动失败排查:如何区分多 Bean 冲突与清理阶段异常
java·spring boot·后端
IT_陈寒22 分钟前
Java线程池这个坑我算是踩明白了
前端·人工智能·后端
An_s32 分钟前
rust开发wasm与浏览器(js)交互
javascript·rust·wasm
掉头发的王富贵36 分钟前
我来入职新公司两个月了,为什么只写了100行代码?
后端·ai编程
从零开始的代码生活_1 小时前
C++ 内存管理:从内存分区到 new/delete 底层原理
开发语言·c++·后端
31535669131 小时前
Superpowers:GPT-5.6 时代下的流程毒瘤
前端·后端
wabs6661 小时前
关于单调栈【力扣739.每日温度的思考】
java·开发语言
AOwhisky1 小时前
Python 学习笔记(第三期)——流程控制核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发·流程控制
逆向编程2 小时前
Socket异常连接自动清理方案
开发语言
Mr -老鬼2 小时前
Zed WASM扩展开发全套踩坑记录(WASI适配、LSP插件开发避坑指南)
rust·wasm·lsp·zed·ai ide·语言服务器