2.7 KiB
axum
axum is a 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. axum is built on top of tower and hyper and makes it easy to plug in any middleware from the tower and tower-http ecosystem. This improves modularity since axum doesn't have its own custom middleware system.
- Focus on routing, extracting data from requests, and building responses. tower middleware can handle the rest.
- Macro free core. Macro frameworks have their place but axum focuses on providing a core that is macro free.
Usage example
use axum::prelude::*;
use hyper::Server;
use std::net::SocketAddr;
#[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(app.into_make_service())
.await
.unwrap();
}
See the crate documentation for way more examples.
Examples
The examples folder contains various examples of how to use axum. The docs also have lots of examples
Getting Help
In the axum's 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 axum project.
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in axum by you, shall be licensed as MIT, without any additional terms or conditions.