Struct axum_server::Server
source · pub struct Server<A = DefaultAcceptor> { /* private fields */ }
Expand description
HTTP server.
Implementations§
source§impl Server
impl Server
sourcepub fn bind(addr: SocketAddr) -> Self
pub fn bind(addr: SocketAddr) -> Self
Create a server that will bind to provided address.
sourcepub fn from_tcp(listener: TcpListener) -> Self
pub fn from_tcp(listener: TcpListener) -> Self
Create a server from existing std::net::TcpListener
.
source§impl<A> Server<A>
impl<A> Server<A>
sourcepub fn acceptor<Acceptor>(self, acceptor: Acceptor) -> Server<Acceptor>
pub fn acceptor<Acceptor>(self, acceptor: Acceptor) -> Server<Acceptor>
Overwrite acceptor.
Examples found in repository?
examples/rustls_session.rs (line 32)
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
async fn main() {
let app = Router::new().route("/", get(handler));
let config = RustlsConfig::from_pem_file(
"examples/self-signed-certs/cert.pem",
"examples/self-signed-certs/key.pem",
)
.await
.unwrap();
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
let acceptor = CustomAcceptor::new(RustlsAcceptor::new(config));
let server = axum_server::bind(addr).acceptor(acceptor);
server.serve(app.into_make_service()).await.unwrap();
}
sourcepub fn map<Acceptor, F>(self, acceptor: F) -> Server<Acceptor>where
F: FnOnce(A) -> Acceptor,
pub fn map<Acceptor, F>(self, acceptor: F) -> Server<Acceptor>where
F: FnOnce(A) -> Acceptor,
Map acceptor.
sourcepub fn http_builder(&mut self) -> &mut Builder<TokioExecutor>
pub fn http_builder(&mut self) -> &mut Builder<TokioExecutor>
Returns a mutable reference to the Http builder.
sourcepub fn handle(self, handle: Handle) -> Self
pub fn handle(self, handle: Handle) -> Self
Provide a handle for additional utilities.
Examples found in repository?
examples/shutdown.rs (line 24)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let handle = Handle::new();
// Spawn a task to shutdown server.
tokio::spawn(shutdown(handle.clone()));
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
axum_server::bind(addr)
.handle(handle)
.serve(app.into_make_service())
.await
.unwrap();
println!("server is shut down");
}
More examples
examples/graceful_shutdown.rs (line 27)
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let handle = Handle::new();
// Spawn a task to gracefully shutdown server.
tokio::spawn(graceful_shutdown(handle.clone()));
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
axum_server::bind(addr)
.handle(handle)
.serve(app.into_make_service())
.await
.unwrap();
println!("server is shut down");
}
sourcepub async fn serve<M>(self, make_service: M) -> Result<()>
pub async fn serve<M>(self, make_service: M) -> Result<()>
Serve provided MakeService
.
To create MakeService
easily, Shared
from tower
can be used.
§Errors
An error will be returned when:
- Binding to an address fails.
make_service
returns an error whenpoll_ready
is called. This never happens onaxum
make services.
Examples found in repository?
More examples
examples/http_and_https.rs (line 25)
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
async fn http_server() {
let app = Router::new().route("/", get(http_handler));
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("http listening on {}", addr);
axum_server::bind(addr)
.serve(app.into_make_service())
.await
.unwrap();
}
async fn http_handler(uri: Uri) -> Redirect {
let uri = format!("https://127.0.0.1:3443{}", uri.path());
Redirect::temporary(&uri)
}
async fn https_server() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let config = RustlsConfig::from_pem_file(
"examples/self-signed-certs/cert.pem",
"examples/self-signed-certs/key.pem",
)
.await
.unwrap();
let addr = SocketAddr::from(([127, 0, 0, 1], 3443));
println!("https listening on {}", addr);
axum_server::bind_rustls(addr, config)
.serve(app.into_make_service())
.await
.unwrap();
}
examples/shutdown.rs (line 25)
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
async fn main() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
let handle = Handle::new();
// Spawn a task to shutdown server.
tokio::spawn(shutdown(handle.clone()));
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
axum_server::bind(addr)
.handle(handle)
.serve(app.into_make_service())
.await
.unwrap();
println!("server is shut down");
}
Trait Implementations§
Auto Trait Implementations§
impl<A> Freeze for Server<A>where
A: Freeze,
impl<A = DefaultAcceptor> !RefUnwindSafe for Server<A>
impl<A> Send for Server<A>where
A: Send,
impl<A> Sync for Server<A>where
A: Sync,
impl<A> Unpin for Server<A>where
A: Unpin,
impl<A = DefaultAcceptor> !UnwindSafe for Server<A>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more