Static Content

This chapter covers how to serve static content with Humphrey. Serving static content is a vital part of many web applications, and Humphrey provides a simple way to do this.

The handlers module provides a number of useful built-in functions to handle requests for static content.

Serving a File

The serve_file handler is the simplest way to serve a single file.

use humphrey::handlers::serve_file; use humphrey::App; fn main() { let app: App<()> = App::new() .with_route("/foo", serve_file("./bar.html")); app.run("0.0.0.0:80").unwrap(); }

Serving a Directory

The serve_dir handler allows you to serve a directory of files. The path you specify should be relative to the current directory.

This handler must be applied using the with_path_aware_route method, since the path is used to determine how to locate the requested content. For example, a request to /static/foo.html with a handler that looks for /static/* should find the file at /static/foo.html, not /static/static/foo.html.

use humphrey::handlers::serve_dir; use humphrey::App; fn main() { let app: App<()> = App::new() .with_path_aware_route("/static/*", serve_dir("./static")); app.run("0.0.0.0:80").unwrap(); }

Redirecting Requests

The redirect handler allows you to redirect requests to a different path, whether it be on the same domain or a different domain.

use humphrey::handlers::redirect; use humphrey::App; fn main() { let app: App<()> = App::new() .with_route("/foo", redirect("https://www.example.com")); app.run("0.0.0.0:80").unwrap(); }

Conclusion

In this section, we've learnt how to use Humphrey's built-in handlers to serve static content from a Humphrey web application. In the next section, we'll explore how to use HTTPS (TLS) with Humphrey using the rustls crate.