From 56d155ac2de9261575d7fd4671a08b95cd16e6bb Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Wed, 27 Aug 2025 01:36:21 +0900 Subject: Add response --- src/main.rs | 2 ++ src/response.rs | 32 ++++++++++++++++++++++++++++++++ src/routers/account.rs | 21 ++++++++++++++------- 3 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 src/response.rs (limited to 'src') diff --git a/src/main.rs b/src/main.rs index ff04b57..c53664a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +mod error; +mod response; mod routers; use tokio::net::TcpListener; diff --git a/src/response.rs b/src/response.rs new file mode 100644 index 0000000..8d505a5 --- /dev/null +++ b/src/response.rs @@ -0,0 +1,32 @@ +use axum::response::{IntoResponse, Response}; +use serde::Serialize; +use serde_json::json; + +pub enum ApiResponse { + Success(T), + Fail(T), + Error(String), +} + +impl IntoResponse for ApiResponse +where + T: Serialize, +{ + fn into_response(self) -> Response { + axum::Json(match self { + ApiResponse::Success(data) => json!({ + "status": "success", + "data": data + }), + ApiResponse::Fail(data) => json!({ + "status": "fail", + "data": data + }), + ApiResponse::Error(message) => json!({ + "status": "error", + "message": message + }), + }) + .into_response() + } +} diff --git a/src/routers/account.rs b/src/routers/account.rs index e8c9753..8192133 100644 --- a/src/routers/account.rs +++ b/src/routers/account.rs @@ -2,16 +2,23 @@ use axum::Router; use axum::response::IntoResponse; use axum::routing::{get, post}; -pub(crate) fn router() -> Router { - Router::new() - .route("/me", get(me)) - .route("/login", post(login)) -} +use crate::response::ApiResponse; async fn me() -> impl IntoResponse { - "Me" + ApiResponse::Success("Me") +} + +async fn register() -> impl IntoResponse { + ApiResponse::Success("Register") } async fn login() -> impl IntoResponse { - "Login" + ApiResponse::Success("Login") +} + +pub(crate) fn router() -> Router { + Router::new() + .route("/me", get(me)) + .route("/register", post(register)) + .route("/login", post(login)) } -- cgit v1.2.3