dumbo_web

Crates.iodumbo_web
lib.rsdumbo_web
version0.1.0
created_at2025-07-08 02:29:49.684822+00
updated_at2025-07-08 02:29:49.684822+00
descriptionhelper functions for web development
homepage
repositoryhttps://github.com/cao5zy/dumbo_web
max_upload_size
id1741976
size6,374
zong-ying.cao (cao5zy)

documentation

https://docs.rs/dumbo_web

README

dumbo_web

helper functions for web development

使用示例

以下示例展示如何在Actix-web路由处理函数中使用json_responsejson_error

use actix_web::{get, web, HttpResponse, Result};
use dumbo_web::{json_error, json_response};
use serde::Serialize;

// 成功响应示例
#[derive(Serialize)]
struct User {
    id: u32,
    name: String,
}

#[get("/user/{id}")]
async fn get_user(id: web::Path<u32>) -> Result<HttpResponse> {
    let user_id = id.into_inner();
    
    // 模拟数据库查询
    if user_id == 0 {
        return Ok(json_error(
            "无效用户ID", 
            "ID必须大于0", 
            Some(1001)
        ));
    }

    let user = User {
        id: user_id,
        name: "Alice".to_string(),
    };
    
    Ok(json_response(user))
}

// 错误处理示例
#[get("/simulate-error")]
async fn simulate_error() -> Result<HttpResponse> {
    let db_result: Result<(), std::io::Error> = Err(std::io::Error::new(
        std::io::ErrorKind::ConnectionRefused,
        "数据库连接失败"
    ));

    match db_result {
        Ok(_) => Ok(json_response("操作成功")),
        Err(e) => Ok(json_error("数据库操作失败", e, Some(5001))),
    }
}

关键点说明:

  1. json_response用于返回结构化成功响应,确保返回的结构具有一致性
  2. json_error自动记录错误并返回标准错误格式
  3. 错误响应包含可自定义的错误代码
  4. 使用serde::Serialize自动序列化数据结构
Commit count: 0

cargo fmt