From 0e89f6797a6df4230d7de9339e7ba88edd623541 Mon Sep 17 00:00:00 2001 From: xfy Date: Tue, 24 Sep 2024 11:32:21 +0800 Subject: [PATCH] refactor(axum): remove useless middlewares --- README.md | 3 +++ web/Rust/axum/src/routes/json.rs | 24 ++++++++++++++++++++++++ web/Rust/axum/src/routes/mod.rs | 9 +++++---- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 web/Rust/axum/src/routes/json.rs diff --git a/README.md b/README.md index a709c27..e4dfeba 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,11 @@ Web framework comparison in my stack. - Read environment variables from `.env` file. - Log request info to std. + - Loggin request http method, host, uri, and UA + - Loggin response status code, latency - Serialize json and plain text. - JWT support. +- Graceful shutdown. ## Frameworks diff --git a/web/Rust/axum/src/routes/json.rs b/web/Rust/axum/src/routes/json.rs new file mode 100644 index 0000000..3455484 --- /dev/null +++ b/web/Rust/axum/src/routes/json.rs @@ -0,0 +1,24 @@ +use std::borrow::Cow; + +use axum::Json; +use serde::{Deserialize, Serialize}; + +use crate::error::ErrorCode; + +use super::{RouteResponse, RouteResult}; + +#[derive(Debug, Deserialize, Serialize)] +pub struct JsonData { + pub name: Cow<'static, str>, +} + +pub async fn json() -> RouteResult { + let data = JsonData { name: "xfy".into() }; + let res = RouteResponse { + code: ErrorCode::Normal, + message: None, + data, + }; + + Ok(Json(res)) +} diff --git a/web/Rust/axum/src/routes/mod.rs b/web/Rust/axum/src/routes/mod.rs index 3c44c9e..17c15ab 100644 --- a/web/Rust/axum/src/routes/mod.rs +++ b/web/Rust/axum/src/routes/mod.rs @@ -11,7 +11,7 @@ use axum::{ }; use serde::Serialize; use tower::ServiceBuilder; -use tower_http::{compression::CompressionLayer, cors::CorsLayer, timeout::TimeoutLayer}; +use tower_http::timeout::TimeoutLayer; use tracing::info; use crate::{ @@ -19,6 +19,8 @@ use crate::{ middlewares::{add_version, logging_route}, }; +pub mod json; + #[derive(Debug, Serialize)] pub struct RouteResponse where @@ -34,12 +36,11 @@ pub type RouteResult = AppResult>>; pub fn routes() -> Router { let router = Router::new() .route("/", get(hello).post(hello)) + .route("/json", get(json::json).post(json::json)) .layer( ServiceBuilder::new() .layer(middleware::from_fn(add_version)) - .layer(CorsLayer::permissive()) - .layer(TimeoutLayer::new(Duration::from_secs(15))) - .layer(CompressionLayer::new()), + .layer(TimeoutLayer::new(Duration::from_secs(15))), ) .fallback(fallback); logging_route(router)