refactor(axum): remove useless middlewares

This commit is contained in:
xfy
2024-09-24 11:32:21 +08:00
parent 601bfd9da7
commit 0e89f6797a
3 changed files with 32 additions and 4 deletions

View File

@ -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

View File

@ -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<JsonData> {
let data = JsonData { name: "xfy".into() };
let res = RouteResponse {
code: ErrorCode::Normal,
message: None,
data,
};
Ok(Json(res))
}

View File

@ -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<T>
where
@ -34,12 +36,11 @@ pub type RouteResult<T> = AppResult<Json<RouteResponse<T>>>;
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)