warp web框架初体验
最近学习rust基本语法之后,想体验一下rust在web开发领域的魅力,顺便去了解了一些web框架。
发现github上有很多rust写的框架,而且人气还不错,随便去下载和稍微学习了一下他们的基本用法和demo体验,最终还是选择了我自己认为最好上手的一款很低调的web框架【warp】进行学习。
warp是基于hyper和tokio基础上,实现的多线程异步web框架。
warp框架 github地址:
github.com/seanmonstar/warp
目录分层:
简单分了3层
- 控制器
- 数据库操作
- 路由定义和登录
main函数
use std::sync::{Arc, Mutex};
use log::info;
mod controllers;
mod models;
mod routers;
use routers::router::get_router;
#[tokio::main]
async fn main() {
//计数器
let count = Arc::new(Mutex::new(0u32));
//日志设置
log4rs::init_file("config/log4rs.yaml", Default::default()).unwrap();
info!("starting HTTP server at http://localhost:80");
//获取路由
let route = get_router(count);
//启动服务器
warp::serve(route).run(([127, 0, 0, 1], 80)).await;
}
路由定义文件
通过warp::get() 或者 warp::post() 或者 warp::delete()等方法可以注册不同请求的路由base,然后通过and方法去把路由规则加入进来。
warp框架很好的用链式调用的方法,将每一个路由配置通过or方法进行注册。
- warp::path! 是一条宏命令
用于注册路由规则,通过【/】将参数分割开,参数用对应的数据类型表示,比如String,u32,u8,u16…- and_then内部传入handle方法,并且是async 修饰的方法,表示异步函数。
- 不同group的路由
比如get组的路由和post组的路由,通过or方法链接合并,传去warp::serve函数内运行。
文章的demo的Github地址
github.com/529124368/rust_warp_web...
warp除了可以写简单的webapi,还支持websocket等。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: