web-applications - 在 rust 中使用 warp 服务静态文件
问题描述
我正在使用warp
库来制作一个生锈的网络应用程序。我正在尝试提供静态文件。我已经从Doc阅读了它的文档。
这是我的代码片段
use serde::Deserialize;
use serde::Serialize;
use warp::path;
use warp::Filter;
#[tokio::main]
async fn main() {
let static_assets = warp::path("static").and(warp::fs::dir("/www/static"));
// let routes = get_routes.or(post_routes).or(static_assets).or(file_route);
let routes = static_assets;
warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;
}
但是当我访问路径localhost:3030/static/index.js
时,它会返回404
响应
这是文件树
src
├── main.rs
└── www
└── static
└── index.js
解决方案
这里的错误令人惊讶地微不足道。路径/www/static
是绝对的。要使其正常工作,您必须将该目录放在文件系统的根目录中。通过使用相对路径,它可以工作:
#[tokio::main]
async fn main() {
let route = warp::path("static").and(warp::fs::dir("www/static"));
warp::serve(route).run(([127, 0, 0, 1], 3030)).await;
}
推荐阅读
- pyspark - pyspark SVD 特征向量与 PCA 特征向量之间的区别是什么?
- python - 为什么'a'和'b'在Python中等于'b'?
- azure - 如何在 Azure Batch Jobs 中运行 DotNet Core 应用程序
- rust - 如何为我的类型实现 String::from?
- javascript - 为什么我收到 400 错误?节点,快递,ReactJS
- sql - 需要一个逻辑来解决任务
- java - 为什么接口是 Java 中 Object 的子类型?
- python - iloc - IndexError("位置索引器超出范围") 即使它在范围内
- html - HTML:取消所需输入并重定向回索引的按钮
- javascript - 当页面加载到特定的 div ID 时如何触发 javascript?