Служите Stati c Файлам, используя искривление в ржавчине - PullRequest
0 голосов
/ 19 января 2020

Я использую библиотеку warp, чтобы превратить веб-приложение в ржавчину. Я пытаюсь обслуживать файлы stati c. Я прочитал документацию от Do c.

Вот мой фрагмент кода

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

1 Ответ

2 голосов
/ 19 января 2020

Ошибка здесь была на удивление тривиальной. Путь /www/static является абсолютным. Чтобы он работал, у вас должен быть этот каталог в root вашей файловой системы. Используя относительный путь, он работает:

#[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;
}
...