summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/anyhow-error-response/src/main.rs8
-rw-r--r--examples/chat/src/main.rs8
-rw-r--r--examples/consume-body-in-extractor-or-middleware/src/main.rs8
-rw-r--r--examples/cors/src/main.rs6
-rw-r--r--examples/customize-extractor-error/src/main.rs8
-rw-r--r--examples/customize-path-rejection/src/main.rs8
-rw-r--r--examples/error-handling-and-dependency-injection/src/main.rs9
-rw-r--r--examples/form/src/main.rs10
-rw-r--r--examples/global-404-handler/src/main.rs8
-rw-r--r--examples/graceful-shutdown/Cargo.toml1
-rw-r--r--examples/graceful-shutdown/src/main.rs2
-rw-r--r--examples/handle-head-request/src/main.rs8
-rw-r--r--examples/hello-world/src/main.rs8
-rw-r--r--examples/http-proxy/src/main.rs2
-rw-r--r--examples/jwt/src/main.rs10
-rw-r--r--examples/key-value-store/src/main.rs8
-rw-r--r--examples/listen-multiple-addrs/src/main.rs2
-rw-r--r--examples/multipart-form/src/main.rs8
-rw-r--r--examples/oauth/src/main.rs10
-rw-r--r--examples/parse-body-based-on-content-type/src/main.rs8
-rw-r--r--examples/print-request-response/src/main.rs8
-rw-r--r--examples/prometheus-metrics/src/main.rs19
-rw-r--r--examples/query-params-with-empty-strings/src/main.rs5
-rw-r--r--examples/readme/src/main.rs9
-rw-r--r--examples/rest-grpc-multiplex/src/main.rs2
-rw-r--r--examples/reverse-proxy/src/main.rs15
-rw-r--r--examples/routes-and-handlers-close-together/src/main.rs8
-rw-r--r--examples/sessions/src/main.rs8
-rw-r--r--examples/sqlx-postgres/src/main.rs12
-rw-r--r--examples/sse/src/main.rs9
-rw-r--r--examples/static-file-server/src/main.rs6
-rw-r--r--examples/stream-to-file/src/main.rs9
-rw-r--r--examples/templates/src/main.rs8
-rw-r--r--examples/testing-websockets/src/main.rs19
-rw-r--r--examples/testing/src/main.rs20
-rw-r--r--examples/tls-rustls/src/main.rs7
-rw-r--r--examples/todos/src/main.rs8
-rw-r--r--examples/tokio-postgres/src/main.rs10
-rw-r--r--examples/tracing-aka-logging/src/main.rs12
-rw-r--r--examples/unix-domain-socket/src/main.rs2
-rw-r--r--examples/validator/src/main.rs12
-rw-r--r--examples/versioning/src/main.rs9
-rw-r--r--examples/websockets/src/main.rs12
43 files changed, 152 insertions, 217 deletions
diff --git a/examples/anyhow-error-response/src/main.rs b/examples/anyhow-error-response/src/main.rs
index 68548313..b7a2416a 100644
--- a/examples/anyhow-error-response/src/main.rs
+++ b/examples/anyhow-error-response/src/main.rs
@@ -10,18 +10,16 @@ use axum::{
routing::get,
Router,
};
-use std::net::SocketAddr;
#[tokio::main]
async fn main() {
let app = Router::new().route("/", get(handler));
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- println!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler() -> Result<(), AppError> {
diff --git a/examples/chat/src/main.rs b/examples/chat/src/main.rs
index 3b49c3e8..f7298c34 100644
--- a/examples/chat/src/main.rs
+++ b/examples/chat/src/main.rs
@@ -18,7 +18,6 @@ use axum::{
use futures::{sink::SinkExt, stream::StreamExt};
use std::{
collections::HashSet,
- net::SocketAddr,
sync::{Arc, Mutex},
};
use tokio::sync::broadcast;
@@ -53,12 +52,11 @@ async fn main() {
.route("/websocket", get(websocket_handler))
.with_state(app_state);
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn websocket_handler(
diff --git a/examples/consume-body-in-extractor-or-middleware/src/main.rs b/examples/consume-body-in-extractor-or-middleware/src/main.rs
index f1b2cbf7..fd63fcb1 100644
--- a/examples/consume-body-in-extractor-or-middleware/src/main.rs
+++ b/examples/consume-body-in-extractor-or-middleware/src/main.rs
@@ -14,7 +14,6 @@ use axum::{
routing::post,
Router,
};
-use std::net::SocketAddr;
use tower::ServiceBuilder;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -32,12 +31,11 @@ async fn main() {
.route("/", post(handler))
.layer(ServiceBuilder::new().layer(middleware::from_fn(print_request_body)));
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
// middleware that shows how to consume the request body upfront
diff --git a/examples/cors/src/main.rs b/examples/cors/src/main.rs
index a0a5e8d8..bbd19206 100644
--- a/examples/cors/src/main.rs
+++ b/examples/cors/src/main.rs
@@ -40,10 +40,8 @@ async fn main() {
async fn serve(app: Router, port: u16) {
let addr = SocketAddr::from(([127, 0, 0, 1], port));
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
- .await
- .unwrap();
+ let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
+ axum::serve(listener, app).await.unwrap();
}
async fn html() -> impl IntoResponse {
diff --git a/examples/customize-extractor-error/src/main.rs b/examples/customize-extractor-error/src/main.rs
index 893fbd14..e8820326 100644
--- a/examples/customize-extractor-error/src/main.rs
+++ b/examples/customize-extractor-error/src/main.rs
@@ -9,7 +9,6 @@ mod derive_from_request;
mod with_rejection;
use axum::{routing::post, Router};
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -29,10 +28,9 @@ async fn main() {
.route("/derive-from-request", post(derive_from_request::handler));
// Run our application
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
diff --git a/examples/customize-path-rejection/src/main.rs b/examples/customize-path-rejection/src/main.rs
index 3bcd91d3..fa382e4b 100644
--- a/examples/customize-path-rejection/src/main.rs
+++ b/examples/customize-path-rejection/src/main.rs
@@ -13,7 +13,6 @@ use axum::{
Router,
};
use serde::{de::DeserializeOwned, Deserialize, Serialize};
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -30,12 +29,11 @@ async fn main() {
let app = Router::new().route("/users/:user_id/teams/:team_id", get(handler));
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- println!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler(Path(params): Path<Params>) -> impl IntoResponse {
diff --git a/examples/error-handling-and-dependency-injection/src/main.rs b/examples/error-handling-and-dependency-injection/src/main.rs
index f28ed4ff..a5bdad9e 100644
--- a/examples/error-handling-and-dependency-injection/src/main.rs
+++ b/examples/error-handling-and-dependency-injection/src/main.rs
@@ -17,7 +17,7 @@ use axum::{
};
use serde::{Deserialize, Serialize};
use serde_json::json;
-use std::{net::SocketAddr, sync::Arc};
+use std::sync::Arc;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use uuid::Uuid;
@@ -42,12 +42,11 @@ async fn main() {
.with_state(user_repo);
// Run our application
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
/// Handler for `GET /users/:id`.
diff --git a/examples/form/src/main.rs b/examples/form/src/main.rs
index 93a5ae13..3f9ed095 100644
--- a/examples/form/src/main.rs
+++ b/examples/form/src/main.rs
@@ -6,7 +6,6 @@
use axum::{extract::Form, response::Html, routing::get, Router};
use serde::Deserialize;
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -22,13 +21,12 @@ async fn main() {
// build our application with some routes
let app = Router::new().route("/", get(show_form).post(accept_form));
- // run it with hyper
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ // run it
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn show_form() -> Html<&'static str> {
diff --git a/examples/global-404-handler/src/main.rs b/examples/global-404-handler/src/main.rs
index 8eb14691..38b02943 100644
--- a/examples/global-404-handler/src/main.rs
+++ b/examples/global-404-handler/src/main.rs
@@ -10,7 +10,6 @@ use axum::{
routing::get,
Router,
};
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -30,12 +29,11 @@ async fn main() {
let app = app.fallback(handler_404);
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler() -> Html<&'static str> {
diff --git a/examples/graceful-shutdown/Cargo.toml b/examples/graceful-shutdown/Cargo.toml
index 19af3113..f287feeb 100644
--- a/examples/graceful-shutdown/Cargo.toml
+++ b/examples/graceful-shutdown/Cargo.toml
@@ -6,4 +6,5 @@ publish = false
[dependencies]
axum = { path = "../../axum" }
+hyper = { version = "0.14", features = ["full"] }
tokio = { version = "1.0", features = ["full"] }
diff --git a/examples/graceful-shutdown/src/main.rs b/examples/graceful-shutdown/src/main.rs
index 3704889a..dabfee16 100644
--- a/examples/graceful-shutdown/src/main.rs
+++ b/examples/graceful-shutdown/src/main.rs
@@ -17,7 +17,7 @@ async fn main() {
// run it
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
println!("listening on {}", addr);
- axum::Server::bind(&addr)
+ hyper::Server::bind(&addr)
.serve(app.into_make_service())
.with_graceful_shutdown(shutdown_signal())
.await
diff --git a/examples/handle-head-request/src/main.rs b/examples/handle-head-request/src/main.rs
index 5b0db264..d49d88ef 100644
--- a/examples/handle-head-request/src/main.rs
+++ b/examples/handle-head-request/src/main.rs
@@ -6,7 +6,6 @@
use axum::response::{IntoResponse, Response};
use axum::{http, routing::get, Router};
-use std::net::SocketAddr;
fn app() -> Router {
Router::new().route("/get-head", get(get_head_handler))
@@ -14,12 +13,11 @@ fn app() -> Router {
#[tokio::main]
async fn main() {
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
-
- axum::Server::bind(&addr)
- .serve(app().into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app()).await.unwrap();
}
// GET routes will also be called for HEAD requests but will have the response body removed.
diff --git a/examples/hello-world/src/main.rs b/examples/hello-world/src/main.rs
index 466caceb..de018335 100644
--- a/examples/hello-world/src/main.rs
+++ b/examples/hello-world/src/main.rs
@@ -5,7 +5,6 @@
//! ```
use axum::{response::Html, routing::get, Router};
-use std::net::SocketAddr;
#[tokio::main]
async fn main() {
@@ -13,12 +12,11 @@ async fn main() {
let app = Router::new().route("/", get(handler));
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- println!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler() -> Html<&'static str> {
diff --git a/examples/http-proxy/src/main.rs b/examples/http-proxy/src/main.rs
index 08845ca9..1abf3bbf 100644
--- a/examples/http-proxy/src/main.rs
+++ b/examples/http-proxy/src/main.rs
@@ -52,7 +52,7 @@ async fn main() {
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
+ hyper::Server::bind(&addr)
.http1_preserve_header_case(true)
.http1_title_case_headers(true)
.serve(Shared::new(service))
diff --git a/examples/jwt/src/main.rs b/examples/jwt/src/main.rs
index 4ee20d4b..a6f8bffa 100644
--- a/examples/jwt/src/main.rs
+++ b/examples/jwt/src/main.rs
@@ -19,7 +19,7 @@ use jsonwebtoken::{decode, encode, DecodingKey, EncodingKey, Header, Validation}
use once_cell::sync::Lazy;
use serde::{Deserialize, Serialize};
use serde_json::json;
-use std::{fmt::Display, net::SocketAddr};
+use std::fmt::Display;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
// Quick instructions
@@ -67,13 +67,11 @@ async fn main() {
.route("/protected", get(protected))
.route("/authorize", post(authorize));
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
-
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn protected(claims: Claims) -> Result<String, AuthError> {
diff --git a/examples/key-value-store/src/main.rs b/examples/key-value-store/src/main.rs
index ccf21825..b22802cb 100644
--- a/examples/key-value-store/src/main.rs
+++ b/examples/key-value-store/src/main.rs
@@ -19,7 +19,6 @@ use axum::{
use std::{
borrow::Cow,
collections::HashMap,
- net::SocketAddr,
sync::{Arc, RwLock},
time::Duration,
};
@@ -74,12 +73,11 @@ async fn main() {
.with_state(Arc::clone(&shared_state));
// Run our app with hyper
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
type SharedState = Arc<RwLock<AppState>>;
diff --git a/examples/listen-multiple-addrs/src/main.rs b/examples/listen-multiple-addrs/src/main.rs
index f292c1d6..fed70daa 100644
--- a/examples/listen-multiple-addrs/src/main.rs
+++ b/examples/listen-multiple-addrs/src/main.rs
@@ -28,7 +28,7 @@ async fn main() {
b: incoming_v6,
};
- axum::Server::builder(combined)
+ hyper::Server::builder(combined)
.serve(app.into_make_service())
.await
.unwrap();
diff --git a/examples/multipart-form/src/main.rs b/examples/multipart-form/src/main.rs
index 31f2887e..f8c0d96b 100644
--- a/examples/multipart-form/src/main.rs
+++ b/examples/multipart-form/src/main.rs
@@ -10,7 +10,6 @@ use axum::{
routing::get,
Router,
};
-use std::net::SocketAddr;
use tower_http::limit::RequestBodyLimitLayer;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -34,12 +33,11 @@ async fn main() {
.layer(tower_http::trace::TraceLayer::new_for_http());
// run it with hyper
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn show_form() -> Html<&'static str> {
diff --git a/examples/oauth/src/main.rs b/examples/oauth/src/main.rs
index 1a01570f..40a039bc 100644
--- a/examples/oauth/src/main.rs
+++ b/examples/oauth/src/main.rs
@@ -25,7 +25,7 @@ use oauth2::{
ClientSecret, CsrfToken, RedirectUrl, Scope, TokenResponse, TokenUrl,
};
use serde::{Deserialize, Serialize};
-use std::{env, net::SocketAddr};
+use std::env;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
static COOKIE_NAME: &str = "SESSION";
@@ -56,13 +56,11 @@ async fn main() {
.route("/logout", get(logout))
.with_state(app_state);
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
-
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
#[derive(Clone)]
diff --git a/examples/parse-body-based-on-content-type/src/main.rs b/examples/parse-body-based-on-content-type/src/main.rs
index 9ee26c6a..bae4ec1d 100644
--- a/examples/parse-body-based-on-content-type/src/main.rs
+++ b/examples/parse-body-based-on-content-type/src/main.rs
@@ -15,7 +15,6 @@ use axum::{
Form, Json, RequestExt, Router,
};
use serde::{Deserialize, Serialize};
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -31,12 +30,11 @@ async fn main() {
let app = Router::new().route("/", post(handler));
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
#[derive(Debug, Serialize, Deserialize)]
diff --git a/examples/print-request-response/src/main.rs b/examples/print-request-response/src/main.rs
index 4703c058..1348d026 100644
--- a/examples/print-request-response/src/main.rs
+++ b/examples/print-request-response/src/main.rs
@@ -13,7 +13,6 @@ use axum::{
routing::post,
Router,
};
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -30,12 +29,11 @@ async fn main() {
.route("/", post(|| async move { "Hello from `POST /`" }))
.layer(middleware::from_fn(print_request_response));
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn print_request_response(
diff --git a/examples/prometheus-metrics/src/main.rs b/examples/prometheus-metrics/src/main.rs
index 675310be..b90c384f 100644
--- a/examples/prometheus-metrics/src/main.rs
+++ b/examples/prometheus-metrics/src/main.rs
@@ -17,7 +17,6 @@ use axum::{
use metrics_exporter_prometheus::{Matcher, PrometheusBuilder, PrometheusHandle};
use std::{
future::ready,
- net::SocketAddr,
time::{Duration, Instant},
};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -42,24 +41,22 @@ fn main_app() -> Router {
async fn start_main_server() {
let app = main_app();
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
- .unwrap()
+ .unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn start_metrics_server() {
let app = metrics_app();
// NOTE: expose metrics enpoint on a different port
- let addr = SocketAddr::from(([127, 0, 0, 1], 3001));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3001")
.await
- .unwrap()
+ .unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
#[tokio::main]
diff --git a/examples/query-params-with-empty-strings/src/main.rs b/examples/query-params-with-empty-strings/src/main.rs
index aa424643..19117c4e 100644
--- a/examples/query-params-with-empty-strings/src/main.rs
+++ b/examples/query-params-with-empty-strings/src/main.rs
@@ -10,10 +10,11 @@ use std::{fmt, str::FromStr};
#[tokio::main]
async fn main() {
- axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
- .serve(app().into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app()).await.unwrap();
}
fn app() -> Router {
diff --git a/examples/readme/src/main.rs b/examples/readme/src/main.rs
index bdcb8945..cd2120cb 100644
--- a/examples/readme/src/main.rs
+++ b/examples/readme/src/main.rs
@@ -11,7 +11,6 @@ use axum::{
Json, Router,
};
use serde::{Deserialize, Serialize};
-use std::net::SocketAddr;
#[tokio::main]
async fn main() {
@@ -26,13 +25,11 @@ async fn main() {
.route("/users", post(create_user));
// run our app with hyper
- // `axum::Server` is a re-export of `hyper::Server`
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
// basic handler that responds with a static string
diff --git a/examples/rest-grpc-multiplex/src/main.rs b/examples/rest-grpc-multiplex/src/main.rs
index f804f6ae..b7f0ab02 100644
--- a/examples/rest-grpc-multiplex/src/main.rs
+++ b/examples/rest-grpc-multiplex/src/main.rs
@@ -75,7 +75,7 @@ async fn main() {
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
+ hyper::Server::bind(&addr)
.serve(tower::make::Shared::new(service))
.await
.unwrap();
diff --git a/examples/reverse-proxy/src/main.rs b/examples/reverse-proxy/src/main.rs
index a01947c6..875a3a5a 100644
--- a/examples/reverse-proxy/src/main.rs
+++ b/examples/reverse-proxy/src/main.rs
@@ -16,7 +16,6 @@ use axum::{
Router,
};
use hyper::client::HttpConnector;
-use std::net::SocketAddr;
type Client = hyper::client::Client<HttpConnector, Body>;
@@ -28,12 +27,11 @@ async fn main() {
let app = Router::new().route("/", get(handler)).with_state(client);
- let addr = SocketAddr::from(([127, 0, 0, 1], 4000));
- println!("reverse proxy listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:4000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler(State(client): State<Client>, mut req: Request) -> Response {
@@ -54,10 +52,9 @@ async fn handler(State(client): State<Client>, mut req: Request) -> Response {
async fn server() {
let app = Router::new().route("/", get(|| async { "Hello, world!" }));
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- println!("server listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
diff --git a/examples/routes-and-handlers-close-together/src/main.rs b/examples/routes-and-handlers-close-together/src/main.rs
index 75320d09..50721e70 100644
--- a/examples/routes-and-handlers-close-together/src/main.rs
+++ b/examples/routes-and-handlers-close-together/src/main.rs
@@ -8,7 +8,6 @@ use axum::{
routing::{get, post, MethodRouter},
Router,
};
-use std::net::SocketAddr;
#[tokio::main]
async fn main() {
@@ -17,12 +16,11 @@ async fn main() {
.merge(get_foo())
.merge(post_foo());
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- println!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
fn root() -> Router {
diff --git a/examples/sessions/src/main.rs b/examples/sessions/src/main.rs
index 9bea9c1b..fcac6c56 100644
--- a/examples/sessions/src/main.rs
+++ b/examples/sessions/src/main.rs
@@ -21,7 +21,6 @@ use axum::{
};
use serde::{Deserialize, Serialize};
use std::fmt::Debug;
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use uuid::Uuid;
@@ -42,12 +41,11 @@ async fn main() {
let app = Router::new().route("/", get(handler)).with_state(store);
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler(user_id: UserIdFromSession) -> impl IntoResponse {
diff --git a/examples/sqlx-postgres/src/main.rs b/examples/sqlx-postgres/src/main.rs
index 8e3353b9..e9553037 100644
--- a/examples/sqlx-postgres/src/main.rs
+++ b/examples/sqlx-postgres/src/main.rs
@@ -21,9 +21,10 @@ use axum::{
Router,
};
use sqlx::postgres::{PgPool, PgPoolOptions};
+use tokio::net::TcpListener;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
-use std::{net::SocketAddr, time::Duration};
+use std::time::Duration;
#[tokio::main]
async fn main() {
@@ -55,12 +56,9 @@ async fn main() {
.with_state(pool);
// run it with hyper
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
- .await
- .unwrap();
+ let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
// we can extract the connection pool with `State`
diff --git a/examples/sse/src/main.rs b/examples/sse/src/main.rs
index dab5a565..52888133 100644
--- a/examples/sse/src/main.rs
+++ b/examples/sse/src/main.rs
@@ -11,7 +11,7 @@ use axum::{
Router,
};
use futures::stream::{self, Stream};
-use std::{convert::Infallible, net::SocketAddr, path::PathBuf, time::Duration};
+use std::{convert::Infallible, path::PathBuf, time::Duration};
use tokio_stream::StreamExt as _;
use tower_http::{services::ServeDir, trace::TraceLayer};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -37,12 +37,11 @@ async fn main() {
.layer(TraceLayer::new_for_http());
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn sse_handler(
diff --git a/examples/static-file-server/src/main.rs b/examples/static-file-server/src/main.rs
index 3a3a2414..3aa7a9a8 100644
--- a/examples/static-file-server/src/main.rs
+++ b/examples/static-file-server/src/main.rs
@@ -103,9 +103,9 @@ fn calling_serve_dir_from_a_handler() -> Router {
async fn serve(app: Router, port: u16) {
let addr = SocketAddr::from(([127, 0, 0, 1], port));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.layer(TraceLayer::new_for_http()).into_make_service())
+ let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app.layer(TraceLayer::new_for_http()))
.await
.unwrap();
}
diff --git a/examples/stream-to-file/src/main.rs b/examples/stream-to-file/src/main.rs
index 2d514162..02164d4e 100644
--- a/examples/stream-to-file/src/main.rs
+++ b/examples/stream-to-file/src/main.rs
@@ -13,7 +13,7 @@ use axum::{
BoxError, Router,
};
use futures::{Stream, TryStreamExt};
-use std::{io, net::SocketAddr};
+use std::io;
use tokio::{fs::File, io::BufWriter};
use tokio_util::io::StreamReader;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -39,12 +39,11 @@ async fn main() {
.route("/", get(show_form).post(accept_form))
.route("/file/:file_name", post(save_request_body));
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
// Handler that streams the request body to a file.
diff --git a/examples/templates/src/main.rs b/examples/templates/src/main.rs
index d7e01a94..1abdb33e 100644
--- a/examples/templates/src/main.rs
+++ b/examples/templates/src/main.rs
@@ -12,7 +12,6 @@ use axum::{
routing::get,
Router,
};
-use std::net::SocketAddr;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -29,12 +28,11 @@ async fn main() {
let app = Router::new().route("/greet/:name", get(greet));
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn greet(extract::Path(name): extract::Path<String>) -> impl IntoResponse {
diff --git a/examples/testing-websockets/src/main.rs b/examples/testing-websockets/src/main.rs
index b778115c..954168b1 100644
--- a/examples/testing-websockets/src/main.rs
+++ b/examples/testing-websockets/src/main.rs
@@ -14,16 +14,14 @@ use axum::{
Router,
};
use futures::{Sink, SinkExt, Stream, StreamExt};
-use std::net::SocketAddr;
#[tokio::main]
async fn main() {
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- println!("listening on {addr}");
- axum::Server::bind(&addr)
- .serve(app().into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ println!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app()).await.unwrap();
}
fn app() -> Router {
@@ -94,17 +92,18 @@ where
#[cfg(test)]
mod tests {
use super::*;
- use std::net::Ipv4Addr;
+ use std::net::{Ipv4Addr, SocketAddr};
use tokio_tungstenite::tungstenite;
// We can integration test one handler by running the server in a background task and
// connecting to it like any other client would.
#[tokio::test]
async fn integration_test() {
- let server = axum::Server::bind(&SocketAddr::from((Ipv4Addr::UNSPECIFIED, 0)))
- .serve(app().into_make_service());
- let addr = server.local_addr();
- tokio::spawn(server);
+ let listener = tokio::net::TcpListener::bind(SocketAddr::from((Ipv4Addr::UNSPECIFIED, 0)))
+ .await
+ .unwrap();
+ let addr = listener.local_addr().unwrap();
+ tokio::spawn(axum::serve(listener, app()));
let (mut socket, _response) =
tokio_tungstenite::connect_async(format!("ws://{addr}/integration-testable"))
diff --git a/examples/testing/src/main.rs b/examples/testing/src/main.rs
index 5f7dbc07..99cc0402 100644
--- a/examples/testing/src/main.rs
+++ b/examples/testing/src/main.rs
@@ -24,14 +24,11 @@ async fn main() {
.with(tracing_subscriber::fmt::layer())
.init();
- let addr = std::net::SocketAddr::from(([127, 0, 0, 1], 3000));
-
- tracing::debug!("listening on {}", addr);
-
- axum::Server::bind(&addr)
- .serve(app().into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app()).await.unwrap();
}
/// Having a function that produces our app makes it easy to call it from tests
@@ -63,7 +60,8 @@ mod tests {
http::{self, Request, StatusCode},
};
use serde_json::{json, Value};
- use std::net::{SocketAddr, TcpListener};
+ use std::net::SocketAddr;
+ use tokio::net::TcpListener;
use tower::Service; // for `call`
use tower::ServiceExt; // for `oneshot` and `ready`
@@ -131,15 +129,11 @@ mod tests {
// You can also spawn a server and talk to it like any other HTTP server:
#[tokio::test]
async fn the_real_deal() {
- let listener = TcpListener::bind("0.0.0.0:0".parse::<SocketAddr>().unwrap()).unwrap();
+ let listener = TcpListener::bind("0.0.0.0:0").await.unwrap();
let addr = listener.local_addr().unwrap();
tokio::spawn(async move {
- axum::Server::from_tcp(listener)
- .unwrap()
- .serve(app().into_make_service())
- .await
- .unwrap();
+ axum::serve(listener, app()).await.unwrap();
});
let client = hyper::Client::new();
diff --git a/examples/tls-rustls/src/main.rs b/examples/tls-rustls/src/main.rs
index 5034cf31..860f56b5 100644
--- a/examples/tls-rustls/src/main.rs
+++ b/examples/tls-rustls/src/main.rs
@@ -93,10 +93,9 @@ async fn redirect_http_to_https(ports: Ports) {
};
let addr = SocketAddr::from(([127, 0, 0, 1], ports.http));
- tracing::debug!("http redirect listening on {}", addr);
-
- axum::Server::bind(&addr)
- .serve(redirect.into_make_service())
+ let listener = tokio::net::TcpListener::bind(addr).await.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, redirect.into_make_service())
.await
.unwrap();
}
diff --git a/examples/todos/src/main.rs b/examples/todos/src/main.rs
index 4463bfa4..9e08876d 100644
--- a/examples/todos/src/main.rs
+++ b/examples/todos/src/main.rs
@@ -24,7 +24,6 @@ use axum::{
use serde::{Deserialize, Serialize};
use std::{
collections::HashMap,
- net::SocketAddr,
sync::{Arc, RwLock},
time::Duration,
};
@@ -68,12 +67,11 @@ async fn main() {
)
.with_state(db);
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
// The query parameters for todos index
diff --git a/examples/tokio-postgres/src/main.rs b/examples/tokio-postgres/src/main.rs
index 77c4c112..effc0320 100644
--- a/examples/tokio-postgres/src/main.rs
+++ b/examples/tokio-postgres/src/main.rs
@@ -13,7 +13,6 @@ use axum::{
};
use bb8::{Pool, PooledConnection};
use bb8_postgres::PostgresConnectionManager;
-use std::net::SocketAddr;
use tokio_postgres::NoTls;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -41,13 +40,12 @@ async fn main() {
)
.with_state(pool);
- // run it with hyper
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ // run it
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
type ConnectionPool = Pool<PostgresConnectionManager<NoTls>>;
diff --git a/examples/tracing-aka-logging/src/main.rs b/examples/tracing-aka-logging/src/main.rs
index 6b4524ac..74a2055a 100644
--- a/examples/tracing-aka-logging/src/main.rs
+++ b/examples/tracing-aka-logging/src/main.rs
@@ -12,7 +12,8 @@ use axum::{
routing::get,
Router,
};
-use std::{net::SocketAddr, time::Duration};
+use std::time::Duration;
+use tokio::net::TcpListener;
use tower_http::{classify::ServerErrorsFailureClass, trace::TraceLayer};
use tracing::{info_span, Span};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
@@ -80,12 +81,9 @@ async fn main() {
);
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
- .await
- .unwrap();
+ let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler() -> Html<&'static str> {
diff --git a/examples/unix-domain-socket/src/main.rs b/examples/unix-domain-socket/src/main.rs
index 0a3d3f0d..ce350720 100644
--- a/examples/unix-domain-socket/src/main.rs
+++ b/examples/unix-domain-socket/src/main.rs
@@ -63,7 +63,7 @@ mod unix {
tokio::spawn(async {
let app = Router::new().route("/", get(handler));
- axum::Server::builder(ServerAccept { uds })
+ hyper::Server::builder(ServerAccept { uds })
.serve(app.into_make_service_with_connect_info::<UdsConnectInfo>())
.await
.unwrap();
diff --git a/examples/validator/src/main.rs b/examples/validator/src/main.rs
index 4f4f6239..a6a25b85 100644
--- a/examples/validator/src/main.rs
+++ b/examples/validator/src/main.rs
@@ -19,8 +19,8 @@ use axum::{
Router,
};
use serde::{de::DeserializeOwned, Deserialize};
-use std::net::SocketAddr;
use thiserror::Error;
+use tokio::net::TcpListener;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use validator::Validate;
@@ -38,13 +38,9 @@ async fn main() {
let app = Router::new().route("/", get(handler));
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
-
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
- .await
- .unwrap();
+ let listener = TcpListener::bind("127.0.0.1:3000").await.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
#[derive(Debug, Deserialize, Validate)]
diff --git a/examples/versioning/src/main.rs b/examples/versioning/src/main.rs
index fd3f6668..b5324d69 100644
--- a/examples/versioning/src/main.rs
+++ b/examples/versioning/src/main.rs
@@ -12,7 +12,7 @@ use axum::{
routing::get,
RequestPartsExt, Router,
};
-use std::{collections::HashMap, net::SocketAddr};
+use std::collections::HashMap;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
#[tokio::main]
@@ -29,12 +29,11 @@ async fn main() {
let app = Router::new().route("/:version/foo", get(handler));
// run it
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(listener, app).await.unwrap();
}
async fn handler(version: Version) {
diff --git a/examples/websockets/src/main.rs b/examples/websockets/src/main.rs
index 73993c15..e13182bb 100644
--- a/examples/websockets/src/main.rs
+++ b/examples/websockets/src/main.rs
@@ -66,12 +66,16 @@ async fn main() {
);
// run it with hyper
- let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
- tracing::debug!("listening on {}", addr);
- axum::Server::bind(&addr)
- .serve(app.into_make_service_with_connect_info::<SocketAddr>())
+ let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
+ tracing::debug!("listening on {}", listener.local_addr().unwrap());
+ axum::serve(
+ listener,
+ app.into_make_service_with_connect_info::<SocketAddr>(),
+ )
+ .await
+ .unwrap();
}
/// The handler for the HTTP request (this gets called when the HTTP GET lands at the start