axum/README.md
2021-06-12 20:18:21 +02:00

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.

Build status

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.