日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pycharm项目目录结构_「Actix-web项目」-项目整体目录结构

發布時間:2025/3/12 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pycharm项目目录结构_「Actix-web项目」-项目整体目录结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

完成一個前后端分離項目,后端技術選型Rust的框架Actix-web,那么用這個框架完成后端代碼它的項目目錄很重要,今天就來著重介紹一下。

目錄結構

下面是自己用Rust Actix-web框架寫web后端的目錄結構,如圖所示:

目錄結構

目錄結構

各個目錄作用

1、config模塊

config模塊主要存放一些配置信息,如網絡端口、主機IP等常用信息,如下:

pub struct Server{ pub port:i32,}#[derive(Deserialize,Debug,Clone)]pub struct Mongo{ pub addr:String, pub database:String,}#[derive(Deserialize,Debug,Clone)]pub struct Ip{ pub localhost:String, pub server:String}

2、constant模塊

constant主要用于定義常用的常量,如下所示:

pub static COMPANY_COLLECTION:&str= "company";pub static CUSTOMER_COLLECTION:&str = "customer"

3、error模塊

error模塊主要用于定義錯誤信息接口,如下:

use std::fmt;use serde::export::Formatter;use toml::de;use std::io;pub enum CommonErrorEnum{ mongodb_error(mongodb::error::Error), common_error(String), toml_error(de::Error),}impl From<:error::error> for CommonErrorEnum{ fn from(error : mongodb::error::Error) -> Self { CommonErrorEnum::mongodb_error(error) }}impl From<:error> for CommonErrorEnum{ fn from(error : de::Error) -> Self { CommonErrorEnum::toml_error(error) }}

4、logger

主要用于定義日志

5、models模塊

主要用于定義數據庫各個表模型數據信息,如用戶賬號表:

use serde::{Deserialize, Serialize};use mongodb::{ bson::{doc, Bson, document},};use serde_json::{Result, Value};#[derive(Deserialize,Debug,Clone)]pub struct Account{ userName:Option, password:Option, token:Option}impl Account{ pub fn to_document(&mut self) ->document::Document{ let mut doc = document::Document::new(); doc.insert("userName",Bson::from(self.userName.take().unwrap())); doc.insert("password", Bson::from(self.password.take().unwrap())); doc.insert("token", Bson::from(self.token.take().unwrap_or("".parse().unwrap()))); doc }}

6、server模塊

server模塊主要定義一些網絡請求數據接口信息,如:

use actix_web::{get, web, App, HttpServer, Responder};use log::info;use actix_web::dev::Server;use crate::service::common;use crate::CONF_INSTANCE;pub async fn init() -> std::io::Result { let config = CONF_INSTANCE.get().unwrap(); let server = config.ip.clone().server; HttpServer::new(|| { App::new() .service(web::resource("/v1/common/register").route(web::post().to(common::register))) }) .bind(server)? .run() .await}

7、service模塊

service模塊用于業務邏輯模塊,如注冊邏輯:

pub async fn register(vo:web::Json<:customer::customer>) -> Response{ info!("{:?}",vo.0); let mut customer = vo.0.clone(); let uid = Uuid::new_v4(); let mut response = HttpResponse::new(StatusCode::OK); let mongodb_client = MONGODB_INSTANCE.get().clone().unwrap(); let config = CONF_INSTANCE.get().clone().unwrap(); let str_data_base = config.clone().mongo.database; let data_base = mongodb_client.database(str_data_base.as_str()); let company_coll = data_base.collection(constant::COMPANY_COLLECTION); let company_value = vo.0.company.clone().unwrap(); // let company: entity::company::Company = serde_json::from_value(company_value).unwrap(); let company_name = company_value.name.unwrap(); let filter = doc!{"name":company_name}; let mut op_find_company = company_coll.find_one(filter,FindOneOptions::default()).await.unwrap();............

8、util模塊

util模塊主要用于定義一些工具函數

/// 工具類,后面轉成libuse std::time::{SystemTime, UNIX_EPOCH};/// String -> &'static str/// 先是把pub fn string_to_static_str(s: String) -> &'static str { Box::leak(s.into_boxed_str())}/// 獲取時間戳pub fn timestamp() -> i64 { let start = SystemTime::now(); let since_the_epoch = start .duration_since(UNIX_EPOCH) .expect("Time went backwards"); let ms = since_the_epoch.as_secs() as i64 * 1000i64 + (since_the_epoch.subsec_nanos() as f64 / 1_000_000.0) as i64; ms}pub fn u8_array_to_string(array:&[u8]) -> String{ use std::fmt::Write; let mut signature_string = String::new(); for a in array.iter() { write!(signature_string, "{:02x}", a); } signature_string}

9、Cargo.toml文件

Cargo.toml文件主要記錄軟件信息和依賴信息,如下所示:

[package]name = "rust_web"version = "0.1.0"authors = ["huayue430@163.com"]edition = "2018"[dependencies]actix = "0.9.0"actix-codec = "0.2.0"actix-web-actors = "2.0.0"actix-http = "1.0.1"awc = "1.0.1"env_logger = "0.6"

總結

以上是生活随笔為你收集整理的pycharm项目目录结构_「Actix-web项目」-项目整体目录结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 毛茸茸成熟亚洲人 | www.射 | 伊人av网| 日韩精品激情 | av官网在线| 啪啪网站大全 | 岛国av电影在线观看 | 亚洲精品国产精品乱码 | 国产第99页 | 国产在线播放av | 国产午夜精品无码 | 亚洲精品偷拍 | 久久久少妇 | gai免费观看网站外网 | 好男人资源 | 夜夜天天干 | 欧洲金发美女大战黑人 | 欧美一区二区高清视频 | 亚洲dvd| 日本不卡一二三区 | 成年人高清视频 | 啪视频网站 | 少妇人妻偷人精品一区二区 | 婷婷色网站 | 国产精品久久久久久久久借妻 | www.国产com | 欧美性大战久久久久久久 | 精品欧美乱码久久久久久1区2区 | 日批视频在线免费看 | 欣赏asian国模裸体pics | 91丨porny丨中文 | 五月天开心激情 | 奴性白洁会所调教 | 欧美激情69 | 在线看一级片 | 男人的天堂2018| 女人性做爰100部免费 | 国产黄色大片视频 | 高清视频免费在线观看 | 超碰av在线免费观看 | 午夜精品区 | 一区二区91| 日韩美女免费线视频 | 91久久综合精品国产丝袜蜜芽 | 日本一级吃奶淫片免费 | 午夜亚洲福利在线老司机 | 亚洲女人视频 | 天天色小说 | 国产精品999. | 日韩免费看片 | 四虎影院永久 | 日韩影视一区二区三区 | 精品久久久久久久中文字幕 | 国产精品视频久久久久 | 爱爱视频网站免费 | 国产精品传媒麻豆hd | 香蕉视频网站在线观看 | www.国产毛片 | 精品国产99一区二区乱码综合 | 小少妇哺乳喂奶播放 | 福利网站在线观看 | 亚洲va久久久噜噜噜久久天堂 | 521av在线 | 欧美成人久久久免费播放 | 四虎影视大全 | 隔壁人妻偷人bd中字 | 中文字幕久久av | aaa影院 | 日批免费看 | 91精品亚洲| 欧美一区免费观看 | 91精品国产色综合久久不卡粉嫩 | 68日本xxxxxⅹxxx22 | 欧美日韩一区二区三区四区五区六区 | 老司机成人免费视频 | 波多野结衣欲乱上班族 | 老熟女一区二区三区 | 中文字幕乱码人妻无码久久 | 五月天中文字幕在线 | 日韩福利电影在线观看 | 国产一区二区在线观看视频 | 亚洲AV无码国产精品国产剧情 | 国产免费一区视频观看免费 | 自拍视频在线观看 | 加勒比一区二区三区 | 91av俱乐部 | 日韩美女一区 | 欧洲天堂网 | 日本韩国欧美中文字幕 | 欧美日韩综合一区二区三区 | 国产综合精品一区二区三区 | 久草99| 伊人福利视频 | 中国极品少妇xxxx做受 | 青青草视频在线观看免费 | 天堂国产在线 | 午夜在线观看av | 亚洲精品福利网站 | 亚洲黄色网页 |