rust 使用静态文件在诗网络服务器

0lvr5msh  于 2023-05-22  发布在  其他
关注(0)|答案(1)|浏览(221)

我尝试使用poemstatic files
cargo.toml:

poem = { version = "1.2.53", features = ["websocket", "static-files"]}

main.rs (简体):

use poem::{endpoint::StaticFileEndpoint, Route, Server, listener::TcpListener};
let app = Route::new().at("/", StaticFileEndpoint::new("index.html"));
Server::new(TcpListener::bind("127.0.0.1:3000"))
    .run(app)
    .await

当我使用index.html的绝对路径时,这是有效的,但不使用相对于我的项目文件夹的路径:浏览器显示not found
我是否必须使用rust-embed才能在二进制文件中包含静态文件?怎么做?

blmhpbnm

blmhpbnm1#

您需要使用StaticFilesEndpoint。

use poem::{endpoint::StaticFilesEndpoint, Route};

let app = Route::new().nest(
    "/",
    StaticFilesEndpoint::new("/path/to/dir")
        .show_files_listing()
        .index_file("index.html"),
);

您使用的是StaticFileEndpoint,它只提供特定的文件,在本例中为index.html
如果你正在创建一个可移植的二进制文件,可能需要rust-embed,但如果你使用的是像docker这样的工具,你可以将文件保存在你的git仓库中,并在运行你的容器之前复制它们。
了解有关StaticFilesEndpoint的更多信息。

相关问题