use anycms_core::ApiResult;
use serde::Serialize;
#[derive(Debug, Serialize)]
struct User {
id: u32,
name: String,
}
fn main() {
println!("=== ResponseData 示例 ===\n");
println!("1. 单值响应示例:");
let user = User {
id: 1,
name: "Alice".to_string(),
};
let single_result: ApiResult<User> = ApiResult::value(user);
let json = serde_json::to_string_pretty(&single_result).unwrap();
println!("{}\n", json);
if let Some(data) = &single_result.data {
println!(" - is_single: {}", data.is_single());
println!(" - is_multiple: {}", data.is_multiple());
if let Some(user) = data.as_single() {
println!(" - User name: {}\n", user.name);
}
}
println!("2. 列表响应示例:");
let users = vec![
User {
id: 1,
name: "Alice".to_string(),
},
User {
id: 2,
name: "Bob".to_string(),
},
User {
id: 3,
name: "Charlie".to_string(),
},
];
let list_result: ApiResult<User> = ApiResult::list(users);
let json = serde_json::to_string_pretty(&list_result).unwrap();
println!("{}\n", json);
if let Some(data) = &list_result.data {
println!(" - is_single: {}", data.is_single());
println!(" - is_multiple: {}", data.is_multiple());
if let Some(users) = data.as_multiple() {
println!(" - Total users: {}\n", users.len());
}
}
println!("3. 空成功响应示例:");
let empty_result: ApiResult<()> = ApiResult::ok();
let json = serde_json::to_string_pretty(&empty_result).unwrap();
println!("{}\n", json);
println!("4. 错误响应示例:");
let error_result: ApiResult<User> = ApiResult::fail("User not found").with_code(404);
let json = serde_json::to_string_pretty(&error_result).unwrap();
println!("{}\n", json);
println!("5. JSON 输出格式总结:");
println!(" 单值: {{\"success\":true,\"data\":{{...}}}}");
println!(" 列表: {{\"success\":true,\"data\":[...]}}");
println!(" 空值: {{\"success\":true}}");
println!(" 错误: {{\"success\":false,\"message\":\"...\",\"code\":...}}");
}