1 unstable release
| 0.1.0 | Jul 8, 2025 |
|---|
#874 in HTTP server
5KB
dumbo_web
helper functions for web development
使用示例
以下示例展示如何在Actix-web路由处理函数中使用json_response和json_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))),
}
}
关键点说明:
json_response用于返回结构化成功响应,确保返回的结构具有一致性json_error自动记录错误并返回标准错误格式- 错误响应包含可自定义的错误代码
- 使用
serde::Serialize自动序列化数据结构
Dependencies
~15–28MB
~442K SLoC