Axum 在进行 URL 路由时,会对路径进行规范化,其中包括 REDIRECT 和 ROOT 路由。在进行 ROOT 路由时,可以应用以下的代码示例:
use axum::{handler::get, Router};
#[tokio::main]
async fn main() {
let app = Router::new()
// 添加 /api 的路由
.route("/api", get(|| async { "API home" }))
// 添加 包含根路径的路由
.route(
"/",
get(|| async {
// 从根目录重定向到 /api
axum::http::Response::builder()
.status(axum::http::StatusCode::SEE_OTHER)
.header(axum::http::header::LOCATION, "/api")
.body(())
.unwrap()
}),
);
// 启动服务并监听 3000 端口
axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
.serve(app.into_make_service())
.await
.unwrap();
}
在这个示例中,通过先添加包含 /api
的路由,再添加包含根路径的路由,并在根路径的处理程序中进行重定向,将客户端重定向到 /api
路径,从而实现了从根路径进行重定向并进行路由规范化的效果。
下一篇:Axum中如何使用HTTP/2?