Crate axum_server
source ·Expand description
axum-server is a hyper server implementation designed to be used with axum framework.
§Features
- HTTP/1 and HTTP/2
- HTTPS through rustls or openssl.
- High performance through hyper.
- Using tower make service API.
- Very good axum compatibility. Likely to work with future axum releases.
§Guide
axum-server can serve
items that implement MakeService
with some additional trait
bounds. Make services that are created using axum
complies with those trait bounds out of the box. Therefore it is more convenient to use this
crate with axum
.
All examples in this crate uses axum
. If you want to use this crate without axum
it is
highly recommended to learn how tower works.
Server::bind
or bind
function can be called to create a server that will bind to
provided SocketAddr
when serve
is called.
A Handle
can be passed to Server
for additional utilities like shutdown
and graceful shutdown.
bind_rustls
can be called by providing RustlsConfig
to create a HTTPS Server
that
will bind on provided SocketAddr
. RustlsConfig
can be cloned, reload methods can be
used on clone to reload tls configuration.
§Features
tls-rustls
- activate rustls support.tls-rustls-no-provider
- activate rustls support without a default provider.tls-openssl
- activate openssl support.
§Example
A simple hello world application can be served like:
use axum::{routing::get, Router};
use std::net::SocketAddr;
#[tokio::main]
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
axum_server::bind(addr)
.serve(app.into_make_service())
.await
.unwrap();
}
You can find more examples in repository.
Modules§
Accept
trait and utilities.- Service traits.
- tls_
openssl tls-openssl
Tls implementation usingopenssl
- tls_
rustls tls-rustls
Tls implementation usingrustls
.
Structs§
- A handle for
Server
. - HTTP server.
Functions§
- Create a
Server
that will bind to provided address. - bind_
openssl tls-openssl
Create a TLS server that will be bound to the provided socket with a configuration. See thecrate::tls_openssl
module for more details. - bind_
rustls tls-rustls
Create a tls server that will bind to provided address. - Create a
Server
from existingstd::net::TcpListener
. - from_
tcp_ rustls tls-rustls
Create a tls server from existingstd::net::TcpListener
.