Rust - axum(01)分离路由模块

概述

网上有很多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进行回调处理,下一个要整理的就是接受参数的部分代码了。

加油,我自己!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stark张宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值