namespace MyHomePage.Api.Common;
///
/// 统一 API 响应包装。
/// 全部接口返回该类型,前端可依据 判定业务结果。
///
/// 业务数据类型
public class ApiResponse
{
/// 业务状态码:0 表示成功,非 0 表示错误
public int Code { get; set; }
/// 提示信息
public string Message { get; set; } = string.Empty;
/// 业务数据
public T? Data { get; set; }
/// 服务器时间戳(毫秒)
public long Timestamp { get; set; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
/// 构造成功响应
public static ApiResponse Ok(T data, string message = "ok") =>
new() { Code = 0, Message = message, Data = data };
/// 构造成功响应(无数据)
public static ApiResponse Ok(string message = "ok") =>
new() { Code = 0, Message = message };
/// 异步等待数据后构造成功响应(用于服务层返回 Task<T>)
public static async Task> OkAsync(Task dataTask, string message = "ok")
{
var data = await dataTask;
return Ok(data, message);
}
/// 异步等待数据后构造成功响应(列表场景,重命名避免类型参数遮蔽)
public static async Task>> OkListAsync(Task> dataTask, string message = "ok")
{
var data = await dataTask;
return new ApiResponse> { Code = 0, Message = message, Data = data };
}
/// 构造失败响应
public static ApiResponse Fail(int code, string message) =>
new() { Code = code, Message = message };
}
/// 无泛型版本的快捷响应(用于无数据的接口)
public class ApiResponse : ApiResponse