https://github.com/brson/basic-http-server
A simple static HTTP server in Rust, for learning and local doc development
https://github.com/brson/basic-http-server
Last synced: about 1 year ago
JSON representation
A simple static HTTP server in Rust, for learning and local doc development
- Host: GitHub
- URL: https://github.com/brson/basic-http-server
- Owner: brson
- Created: 2016-01-18T09:13:18.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2023-12-10T06:15:50.000Z (over 2 years ago)
- Last Synced: 2025-04-01T14:17:01.671Z (about 1 year ago)
- Language: Rust
- Homepage:
- Size: 282 KB
- Stars: 384
- Watchers: 10
- Forks: 53
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# `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.
[`tokio`]: https://github.com/tokio-rs/tokio
[`hyper`]: https://github.com/hyperium/hyper
[`main.rs`]: src/main.rs
[`ext.rs`]: src/ext.rs
## 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`:
```sh
$ cargo install basic-http-server
$ basic-http-server
```
To turn on the developer extensions, pass `-x`:
```sh
$ basic-http-server -x
```
To increase logging verbosity use `RUST_LOG`:
```sh
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 Sets the IP:PORT combination (default "127.0.0.1:4000")
ARGS:
ROOT Sets the root directory (default ".")
```
## License
MIT/Apache-2.0