2.8 KiB
tower-web
WARNING: tower-web is very much still work in progress. Nothing is released to crates.io yet and you shouldn't be using this in production.
tower-web (name pending) is a tiny web application framework that focuses on ergonomics and modularity.
More information about this crate can be found in the crate documentation.
Goals
- Ease of use. Building web apps in Rust should be as easy as
async fn handle(Request) -> Response
. - Solid foundation. tower-web is built on top of tower and makes it easy to plug in any middleware from the tower and tower-http ecosystem.
- Focus on routing, extracting data from requests, and generating responses. Tower middleware can handle the rest.
- Macro free core. Macro frameworks have their place but tower-web focuses on providing a core that is macro free.
Usage example
use tower_web::prelude::*;
use hyper::Server;
use std::net::SocketAddr;
use tower::make::Shared;
#[tokio::main]
async fn main() {
// build our application with a single route
let app = route("/", get(|| async { "Hello, World!" }));
// run it with hyper on localhost:3000
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
Server::bind(&addr)
.serve(Shared::new(app))
.await
.unwrap();
}
Examples
The examples folder contains various examples of how to use tower-web. The docs also have lots of examples
Getting Help
If you're new to tower its [guides] might help. In the tower-web repo we also
have a number of examples showing how to put everything together.
You're also welcome to ask in the #tower
Discord channel or open an
issue with your question.
Contributing
🎈 Thanks for your help improving the project! We are so happy to have you! We have a contributing guide to help you get involved in the tower-web project.
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in tower-web by you, shall be licensed as MIT, without any additional terms or conditions.