造轮子之统一请求响应格式
1.Asp.Net Core造轮之旅:逐步构建自己的开发框架-目录2.asp.net core之Startup3.asp.net core之依赖注入4.asp.net core之中间件5.asp.net core之Host6.asp.net core之Kestrel7.asp.net core之配置8.asp.net core之Options9.asp.net core之日志10.asp.net core之路由11.asp.net core之异常处理12.asp.net core之HttpClient13.asp.net core之实时应用14.asp.net core之EfCore15.造轮子之自动依赖注入16.造轮子之日志17.造轮子之统一业务异常处理
18.造轮子之统一请求响应格式
19.造轮子之缓存20.造轮子之ORM集成21.造轮子之asp.net core identity22.造轮子之自定义授权策略23.造轮子之权限管理24.造轮子之多语言管理25.造轮子之角色管理26.造轮子之用户管理27.造轮子之菜单管理28.造轮子之属性注入配合懒加载构建服务抽象基类29.造轮子之EventBus30.造轮子之消息实时推送31.造轮子之种子数据32.造轮子之集成GraphQL33.造轮子之设置管理34.造轮子之文件管理35.造轮子之单层应用总结篇36.单层应用升级到多层应用137.单层应用升级到多层应用238.单层应用升级到多层应用3在上文中我们实现了统一业务异常处理,在异常响应中我们也使用了统一的响应格式返回给客户端。
接下来我们就讲一下约定统一的氢气响应格式。
在业务开发中,一个规范统一的请求响应格式可以提高我们的前后端开发对接效率,同时清晰的结构提高了可读性。
响应基类#
首先定义一个最基础的只提供Code和Message两个属性的基类
public class R
{
public R()
{
}
public R(string code, string message)
{
Code = code;
Message = message;
}
public string Code { get; set; } = "0";
public string Message { get; set; } = "success";
}
我们约定状态码0则是成功,Message成功默认为success。
泛型响应类#
业务请求中我们通常需要返回数据,所以一个统一格式泛型的响应类型就很有必要。我们直接继承R类型,添加一个泛型属性。
public class R<TData> : R
{
public R(TData data) : base()
{
Data = data;
}
public TData Data { get; set; }
}
分页泛型响应类和分页请求基类#
除了我们普通的数据响应,我们很多情况也需要分页查询响应。那么单独构造一个分页专用泛型的响应类型和分页请求基类就很必要。
public class Page<TData> : R
{
public Page(List<TData> data, long total) : base()
{
Data = data;
Total = total;
}
public List<TData> Data { get; set; }
public long Total { get; set; }
}
同样是继承R基类,添加一个泛型List属性和分页Total属性。
分页请求基类,我们分页请求大部分是固定的请求参数是页码,请求数据量,以及排序。所以我们把这三个属性抽象出来形成基类。后续复杂的分页业务查询即可继承此基类再额外增加查询条件。
public class PageRequest
{
public int PageIndex { get; set; } = 1;
public int PageSize { get; set; } = 10;
public string OrderBy { get; set; } = "Id";
}
到这我们完成了我们基础的请求响应格式的统一。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?