基于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;
相关推荐
江畔柳前堤35 分钟前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
Wang's Blog1 小时前
Go-Zero 项目开发47:自研微服务框架的必要性与核心结构设计
开发语言·微服务·golang
白鸽(二般)2 小时前
MinIO Java Client API
java·开发语言
hPw0eKIqD2 小时前
C++ 模板参数推导问题小记(非推导上下文)
开发语言·c++
临床数据科学和人工智能兴趣组2 小时前
要使用 R Markdown,首先需要安装 R 和 RStudio,接着安装 rmarkdown 包
开发语言·数据挖掘·数据分析·r语言·r语言-4.2.1
Nebula嵌入式3 小时前
【C语言】09-深入解析main函数
linux·c语言·开发语言·嵌入式
陈随易3 小时前
moon,apt和yum之外linux系统命令安装新选择
前端·后端·程序员
码事漫谈4 小时前
当单库日增 4.5TB,异构实时同步还能稳得住吗?
后端
神罚天下ET4 小时前
c# ACME client (补充)
开发语言·c#
小灰灰搞电子5 小时前
Qt 实现魔法导航菜单源码分享
开发语言·qt