agilelabs-fx-docs main tasks/build-webapi.md

做一个 WebAPI

本页把 WebAPI 最常见的查找路径压缩到一个地方:返回封包、异常处理、认证授权、Swagger 对齐、项目差异。

我现在要解决什么

  • 如何统一前端返回包 { data, code, msg, errMsg, tid }
  • 异常在哪一层处理。
  • 认证授权由框架接管还是宿主显式接入。
  • Swagger 如何与响应封包保持一致。

先看哪几页

  1. 框架规范 / WebAPI 规范
  2. WebAPI 主题
  3. 宿主与启动

最短落地路径

  • 新服务:先按主题页落规范,再按 后端初始化教程 补最小骨架。
  • 老项目改造:直接对照真实用例里的认证和异常链。

最小接入步骤

  1. 在 MVC 过滤器注册处统一挂上 ExceptionHandlerFilterEnvelopFilterAttribute
  2. 确认认证授权到底走框架集成还是宿主显式接入,只保留一条路径。
  3. 对照 WebAPI 主题 的成功链路图和异常链路图,检查请求最终是如何被包装的。
  4. 检查 Swagger 是否描述了真实的封包结构,而不是 Controller 的裸返回类型。

你应该改哪些位置

  • 宿主层:过滤器注册、认证授权、Json 配置。
  • 项目层:IApiExceptionProcessor 的业务异常映射。
  • 文档层:Swagger 或接口说明里的响应封包结构。
  • 检查层:用 WebAPI 与前端契约检查 做回归核对。

自查清单

  • 成功响应是否统一返回 { data, code, msg, errMsg, tid }
  • ModelState 失败是否进入统一异常链,而不是由 Action 手工判断。
  • [Authorize] 接口是否真的经过了 UseAuthentication()UseAuthorization()
  • 例外接口是否显式标了 IgnoreEnvelopAttribute,并在文档中说明。

真实项目怎么做

  • niusys-webapiExceptionHandlerFilter + EnvelopFilterAttribute + Swagger Envelop Filters
  • gmandarin-backendIsIntegrateAspNetAuthentication = true
  • woscm:项目级异常处理器、业务错误码、TraceId 回写。

相关主题