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 { /// 构造成功响应(无数据) public static ApiResponse Ok() => new() { Code = 0, Message = "ok" }; }