Expand description
Creates a Filter
that serves a File at the path
.
Does not filter out based on any information of the request. Always serves
the file at the exact path
provided. Thus, this can be used to serve a
single file with GET
s, but could also be used in combination with other
filters, such as after validating in POST
request, wanting to return a
specific file as the body.
For serving a directory, see dir.
Example
// Always serves this file from the file system.
let route = warp::fs::file("/www/static/app.js");
Examples found in repository?
examples/file.rs (line 11)
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
async fn main() {
pretty_env_logger::init();
let readme = warp::get()
.and(warp::path::end())
.and(warp::fs::file("./README.md"));
// dir already requires GET...
let examples = warp::path("ex").and(warp::fs::dir("./examples/"));
// GET / => README.md
// GET /ex/... => ./examples/..
let routes = readme.or(examples);
warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;
}
More examples
examples/compression.rs (line 7)
≺ ≻
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
async fn main() {
let file = warp::path("todos").and(warp::fs::file("./examples/todos.rs"));
// NOTE: You could double compress something by adding a compression
// filter here, a la
// ```
// let file = warp::path("todos")
// .and(warp::fs::file("./examples/todos.rs"))
// .with(warp::compression::brotli());
// ```
// This would result in a browser error, or downloading a file whose contents
// are compressed
let dir = warp::path("ws_chat").and(warp::fs::file("./examples/websockets_chat.rs"));
let file_and_dir = warp::get()
.and(file.or(dir))
.with(warp::compression::gzip());
let examples = warp::path("ex")
.and(warp::fs::dir("./examples/"))
.with(warp::compression::deflate());
// GET /todos => gzip -> toods.rs
// GET /ws_chat => gzip -> ws_chat.rs
// GET /ex/... => deflate -> ./examples/...
let routes = file_and_dir.or(examples);
warp::serve(routes).run(([127, 0, 0, 1], 3030)).await;
}