登录接口响应统一使用 ApiResponse 包装格式

This commit is contained in:
fish
2026-04-13 21:26:12 +08:00
parent e8580b9314
commit 66e553c7c8
2 changed files with 32 additions and 20 deletions

View File

@@ -28,12 +28,18 @@ struct LoginRequest {
password: String,
}
// 登录响应
// 统一响应包装
#[derive(Serialize)]
struct LoginResponse {
struct ApiResponse<T> {
success: bool,
token: Option<String>,
message: String,
data: Option<T>,
}
// 登录业务数据
#[derive(Serialize)]
struct LoginData {
token: String,
}
// JWT Claims
@@ -87,7 +93,7 @@ async fn main() {
async fn login_handler(
State(state): State<Arc<AppState>>,
Json(payload): Json<LoginRequest>,
) -> (StatusCode, Json<LoginResponse>) {
) -> (StatusCode, Json<ApiResponse<LoginData>>) {
info!("Login attempt for user: {}", payload.username);
// 查询用户账号与密码
@@ -115,10 +121,10 @@ async fn login_handler(
(
StatusCode::OK,
Json(LoginResponse {
Json(ApiResponse {
success: true,
token: Some(token),
message: "Login successful".to_string(),
data: Some(LoginData { token }),
}),
)
}
@@ -126,10 +132,10 @@ async fn login_handler(
warn!("Invalid password for user {}", payload.username);
(
StatusCode::UNAUTHORIZED,
Json(LoginResponse {
Json(ApiResponse {
success: false,
token: None,
message: "Invalid credentials".to_string(),
data: None,
}),
)
}
@@ -137,10 +143,10 @@ async fn login_handler(
warn!("Password verification error: {:?}", e);
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(LoginResponse {
Json(ApiResponse {
success: false,
token: None,
message: "Internal error".to_string(),
data: None,
}),
)
}

View File

@@ -28,12 +28,18 @@ struct LoginRequest {
password: String,
}
// 登录响应
// 统一响应包装
#[derive(Serialize)]
struct LoginResponse {
struct ApiResponse<T> {
success: bool,
token: Option<String>,
message: String,
data: Option<T>,
}
// 登录业务数据
#[derive(Serialize)]
struct LoginData {
token: String,
}
// JWT Claims
@@ -87,7 +93,7 @@ async fn main() {
async fn login_handler(
State(state): State<Arc<AppState>>,
Json(payload): Json<LoginRequest>,
) -> (StatusCode, Json<LoginResponse>) {
) -> (StatusCode, Json<ApiResponse<LoginData>>) {
info!("Login attempt for email: {}", payload.email);
// 查询用户邮箱与密码
@@ -115,10 +121,10 @@ async fn login_handler(
(
StatusCode::OK,
Json(LoginResponse {
Json(ApiResponse {
success: true,
token: Some(token),
message: "Login successful".to_string(),
data: Some(LoginData { token }),
}),
)
}
@@ -126,10 +132,10 @@ async fn login_handler(
warn!("Invalid password for email {}", payload.email);
(
StatusCode::UNAUTHORIZED,
Json(LoginResponse {
Json(ApiResponse {
success: false,
token: None,
message: "Invalid credentials".to_string(),
data: None,
}),
)
}
@@ -137,10 +143,10 @@ async fn login_handler(
warn!("Password verification error: {:?}", e);
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(LoginResponse {
Json(ApiResponse {
success: false,
token: None,
message: "Internal error".to_string(),
data: None,
}),
)
}