You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Axum中如何配置以提供静态文件服务?

在Axum中如何配置以提供静态文件服务?

嘿,我完全懂你想简化配置的需求!在Axum里提供静态文件其实没那么复杂,不需要缓存破坏器的话,用官方推荐的方式就能轻松搞定,我来给你一步步捋清楚~

首先,你需要确保项目依赖里包含了处理静态文件的相关模块,Axum的静态文件服务现在是放在axum-extra这个 crate 里的,所以先更新你的Cargo.toml:

[dependencies]
axum = "0.7"
axum-extra = { version = "0.7", features = ["static-files"] }
tokio = { version = "1.0", features = ["full"] }

接下来是src/main.rs的完整配置,我会把你没写完的部分补全,同时加上静态文件服务的逻辑:

use axum::{
    routing::get,
    Router,
    response::Html,
};
// 导入静态文件服务需要的模块
use axum_extra::routing::ServeDir;
use std::net::SocketAddr;

#[tokio::main]
async fn main() {
    // 构建路由
    let app = Router::new()
        // 保留你原本的HTML路由示例
        .route("/", get(home))
        // 配置静态文件服务:把/public开头的请求映射到本地的public文件夹
        .nest_service("/public", ServeDir::new("public"));

    // 绑定地址并启动服务器
    let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
    println!("服务器运行在 http://{}", addr);
    axum::Server::bind(&addr)
        .serve(app.into_make_service())
        .await
        .unwrap();
}

// 你的首页HTML处理函数
async fn home() -> Html<&'static str> {
    Html(r#"
        <!DOCTYPE html>
        <html>
            <head>
                <!-- 这里引用静态文件的路径要和上面的路由对应 -->
                <link rel="stylesheet" href="/public/style.css">
            </head>
            <body>
                <h1>Axum静态文件测试</h1>
                <script src="/public/main.js"></script>
            </body>
        </html>
    "#)
}

这里有几个关键点要注意:

  • 文件路径匹配:ServeDir::new("public")指定了本地存储静态文件的文件夹(比如你可以把CSS、JS、图片放在项目根目录的public文件夹里),而.nest_service("/public", ...)表示所有以/public开头的请求都会被这个服务处理,比如访问http://localhost:3000/public/style.css就会读取本地public/style.css文件。
  • 简化根路径访问:如果你不想加/public前缀,想直接通过/style.css访问静态文件,可以把.nest_service换成.merge(ServeDir::new("public")),这样Axum会先匹配你定义的路由,没匹配到的请求就会去静态文件里查找。
  • 路径正确性:运行程序时要确保当前工作目录是项目根目录,不然相对路径会找不到静态文件;如果是打包后的可执行文件,建议用绝对路径或者把静态文件和程序放在同一目录下。

按照这个配置,你就能正常提供静态文件服务了,不需要复杂的缓存处理,完全符合你简化的需求~

备注:内容来源于stack exchange,提问作者McBoatface et al.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:07:59