Rust - axum(01)分离路由模块
网上有很多axum框架的教程,但是都不是那么详细,根据业务的需求,准备把原有的分布式更换成以Rust axum 的web微服务,认真记录当前的每一步拆解,供朋友们交流和学习。
·
概述
网上有很多axum框架的教程,但是都不是那么详细,根据业务的需求,准备把原有的分布式更换成以Rust axum 的web微服务,认真记录当前的每一步拆解,供朋友们交流和学习。
最小例子
mod routers;
#[tokio::main]
async fn main() {
// run it with hyper on localhost:3000
let app = routers::get_router();
axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
.serve(app.into_make_service())
.await
.unwrap();
}
代码说明:监听本地3000端口,.await进行等待阻塞,分离了请求的路由层。
routers 模块代码
use axum::{
Router,
routing::{get},
http::{StatusCode, Uri},
handler::Handler
};
pub async fn get_router() -> anyhow::Result<Router> {
let routers = Router::new()
.route("/", get(get_root))
.route("/stark", get(get_stark))
.fallback(fallback.into_service());
Ok(routers)
}
async fn get_root() -> String {
String::from("hello,axum")
}
async fn get_stark() -> String {
String::from("hello,stark")
}
async fn fallback(url: Uri) -> (StatusCode,String) {
println!("未知路由:{}", url);
(StatusCode::INTERNAL_SERVER_ERROR,"未知路由:".to_string())
}
use 是引入所需的依赖,当所有的路由都没有匹配上的时候,fallback进行回调处理,下一个要整理的就是接受参数的部分代码了。
加油,我自己!
更多推荐
已为社区贡献5条内容
所有评论(0)