ポートフォリオ Web サイトを作成しています。一部のプロジェクトには、URL の ID に従って提供したい静的な HTML デモがあります。ルートは次のようになります。
#[get("/demo/<id>/<pathbuf..>")]
fn site_demo(id: usize, pathbuf: Option<PathBuf>) -> Option<NamedFile> {
// set path according to id
let demo = format!{"static/projects/{:03}/demo/", id};
// if `pathbuf` is not provided, set file to `index.html`
let pathbuf = pathbuf.unwrap_or(PathBuf::from("index.html"));
let path = Path::new(&demo).join(pathbuf);
NamedFile::open(path).ok()
}
ブラウザーに入力localhost:5050/demo/003/index.html
すると、デモ (およびデモ フォルダー内の他のすべて) が読み込まれます。ただし、入力するlocalhost:5050/demo/003/
と、このエラーが発生します(/
最後になくても同じ結果になります):
GET /demo/003/ text/html:
=> Error: No matching routes for GET /demo/003/ text/html.
=> Warning: Responding with 404 Not Found catcher.
=> Response succeeded.
PathBuf
はオプションであり、 に設定されるため、ルートが一致することを期待していindex.html
ます。私には理にかなっています...
どこかで間違っていましたか、それとも問題を開く必要がありますか?