From d7c4708223aeeb123de6bc3b77ceabc8ccc326ed Mon Sep 17 00:00:00 2001 From: xfy Date: Tue, 24 Sep 2024 15:51:56 +0800 Subject: [PATCH] feat(axum-xitca): add json route --- frameworks/Rust/axum-xitca/src/routes/json.rs | 20 +++++++++++++++++++ frameworks/Rust/axum-xitca/src/routes/mod.rs | 15 ++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 frameworks/Rust/axum-xitca/src/routes/json.rs diff --git a/frameworks/Rust/axum-xitca/src/routes/json.rs b/frameworks/Rust/axum-xitca/src/routes/json.rs new file mode 100644 index 0000000..24795c0 --- /dev/null +++ b/frameworks/Rust/axum-xitca/src/routes/json.rs @@ -0,0 +1,20 @@ +use std::borrow::Cow; + +use axum::Json; +use serde::{Deserialize, Serialize}; + +use super::{RouteResponse, RouteResult}; + +#[derive(Serialize, Deserialize, Default)] +pub struct JsonData { + pub name: Cow<'static, str>, +} + +pub async fn json() -> RouteResult { + let data = JsonData { name: "xfy".into() }; + let res = RouteResponse { + data, + ..Default::default() + }; + Ok(Json(res)) +} diff --git a/frameworks/Rust/axum-xitca/src/routes/mod.rs b/frameworks/Rust/axum-xitca/src/routes/mod.rs index d511294..633c501 100644 --- a/frameworks/Rust/axum-xitca/src/routes/mod.rs +++ b/frameworks/Rust/axum-xitca/src/routes/mod.rs @@ -19,6 +19,8 @@ use crate::{ middlewares::{add_version, logging_route}, }; +mod json; + #[derive(Debug, Serialize)] pub struct RouteResponse where @@ -29,11 +31,24 @@ where message: Option>, data: T, } +impl Default for RouteResponse +where + T: Serialize + Default, +{ + fn default() -> Self { + Self { + code: ErrorCode::Normal, + message: None, + data: T::default(), + } + } +} 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))