【从零开始的rust web开发之路 二】axum中间件和共享状态使用
use axum::{
extract::{Extension, FromRequest},
routing::get,
Router,
};
use std::net::SocketAddr;
use tower::ServiceBuilder;
use tower_http::services::ServeDir;
#[tokio::main]
async fn main() {
// 设置静态文件目录
let static_files = ServeDir::new("static").handle_error(|error| {
(http::StatusCode::INTERNAL_SERVER_ERROR, error.to_string())
});
// 创建axum路由,并添加中间件
let app = Router::new()
.merge(static_files.into_router())
.route("/", get(|| async { "Hello, World!" }))
.layer(axum::middleware::Trace::new());
// 运行服务器
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
axum::Server::bind(&addr)
.serve(app.into_make_service())
.await
.unwrap();
}
这段代码演示了如何在axum中设置静态文件目录,并且如何添加一个简单的中间件Trace
来跟踪请求。最后,它启动了一个服务器,监听本地的3000端口。
评论已关闭