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)
17async fn main() {
18 let app = Router::new().route("/", get(handler));
19
20 let config = RustlsConfig::from_pem_file(
21 "examples/self-signed-certs/cert.pem",
22 "examples/self-signed-certs/key.pem",
23 )
24 .await
25 .unwrap();
26
27 let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
28
29 println!("listening on {}", addr);
30
31 let acceptor = CustomAcceptor::new(RustlsAcceptor::new(config));
32 let server = axum_server::bind(addr).acceptor(acceptor);
33
34 server.serve(app.into_make_service()).await.unwrap();
35}
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)
13async fn main() {
14 let app = Router::new().route("/", get(|| async { "Hello, world!" }));
15
16 let handle = Handle::new();
17
18 // Spawn a task to shutdown server.
19 tokio::spawn(shutdown(handle.clone()));
20
21 let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
22 println!("listening on {}", addr);
23 axum_server::bind(addr)
24 .handle(handle)
25 .serve(app.into_make_service())
26 .await
27 .unwrap();
28
29 println!("server is shut down");
30}
More examples
examples/graceful_shutdown.rs (line 27)
16async fn main() {
17 let app = Router::new().route("/", get(|| async { "Hello, world!" }));
18
19 let handle = Handle::new();
20
21 // Spawn a task to gracefully shutdown server.
22 tokio::spawn(graceful_shutdown(handle.clone()));
23
24 let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
25 println!("listening on {}", addr);
26 axum_server::bind(addr)
27 .handle(handle)
28 .serve(app.into_make_service())
29 .await
30 .unwrap();
31
32 println!("server is shut down");
33}
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)
19async fn http_server() {
20 let app = Router::new().route("/", get(http_handler));
21
22 let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
23 println!("http listening on {}", addr);
24 axum_server::bind(addr)
25 .serve(app.into_make_service())
26 .await
27 .unwrap();
28}
29
30async fn http_handler(uri: Uri) -> Redirect {
31 let uri = format!("https://127.0.0.1:3443{}", uri.path());
32
33 Redirect::temporary(&uri)
34}
35
36async fn https_server() {
37 let app = Router::new().route("/", get(|| async { "Hello, world!" }));
38
39 let config = RustlsConfig::from_pem_file(
40 "examples/self-signed-certs/cert.pem",
41 "examples/self-signed-certs/key.pem",
42 )
43 .await
44 .unwrap();
45
46 let addr = SocketAddr::from(([127, 0, 0, 1], 3443));
47 println!("https listening on {}", addr);
48 axum_server::bind_rustls(addr, config)
49 .serve(app.into_make_service())
50 .await
51 .unwrap();
52}
examples/shutdown.rs (line 25)
13async fn main() {
14 let app = Router::new().route("/", get(|| async { "Hello, world!" }));
15
16 let handle = Handle::new();
17
18 // Spawn a task to shutdown server.
19 tokio::spawn(shutdown(handle.clone()));
20
21 let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
22 println!("listening on {}", addr);
23 axum_server::bind(addr)
24 .handle(handle)
25 .serve(app.into_make_service())
26 .await
27 .unwrap();
28
29 println!("server is shut down");
30}
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