15 unstable releases (6 breaking)

0.8.1 Jan 2, 2020
0.8.0 Nov 16, 2019
0.7.1 Nov 16, 2019
0.6.3 Jul 30, 2019
0.1.0 Mar 2, 2016

#1295 in HTTP server

Download history 81/week @ 2025-08-13 113/week @ 2025-08-20 148/week @ 2025-08-27 124/week @ 2025-09-03 134/week @ 2025-09-10 124/week @ 2025-09-17 140/week @ 2025-09-24 111/week @ 2025-10-01 150/week @ 2025-10-08 129/week @ 2025-10-15 122/week @ 2025-10-22 129/week @ 2025-10-29 105/week @ 2025-11-05 109/week @ 2025-11-12 129/week @ 2025-11-19 114/week @ 2025-11-26

468 downloads per month

MIT/Apache

32KB
597 lines

basic-http-server

A simple static HTTP server, for learning and local development.

basic-http-server is designed for two purposes:

  • as a teaching tool. It is a simple and well-commented example of basic tokio, hyper, and asynchronous Rust programming, with async / await.

  • for local development. It serves static HTML content, and with the -x flag, provides convenience features useful for creating developer documentation, including markdown rendering and directory listing.

The entire reference source for setting up a hyper HTTP server is contained in main.rs. The ext.rs file contains developer extensions.

Developer extensions

When passed the -x flag, basic-http-server enables additional conveniences useful for developing documentation locally. Those extensions are:

  • Rendering files with the ".md" extension as Markdown.

  • Listing directories when no "index.html" file is found.

  • Serving common source code files as "text/plain" so they are rendered in the browser.

This makes basic-http-server useful for the following scenarios:

  • Previewing markdown content. Draft your README.md changes and view them locally before pushing to GitHub.

  • Navigating to local documentation, including Rust API documentation. Just run basic-http-server -x in your project directory, and use the directory listing to navigate to target/doc, then find the crates to read from there (cargo doc doesn't put an index.html file in target/doc).

Installation and Use

Note that basic-http-server is not production-ready and should not be exposed to the internet. It is a learning and development tool.

Install with cargo install:

$ cargo install basic-http-server
$ basic-http-server

To turn on the developer extensions, pass -x:

$ basic-http-server -x

To increase logging verbosity use RUST_LOG:

RUST_LOG=basic_http_server=trace basic-http-server -x

Command line arguments:

USAGE:
        basic-http-server [FLAGS] [OPTIONS] [ARGS]

FLAGS:
    -x               Enable developer extensions
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -a, --addr <ADDR>    Sets the IP:PORT combination (default "127.0.0.1:4000")

ARGS:
    ROOT    Sets the root directory (default ".")

License

MIT/Apache-2.0

Dependencies

~24MB
~434K SLoC