前端对接规范
本页定义 AgileLabs Framework 项目在前后端交互时必须稳定遵守的字段命名、返回包和时间处理约定。前端项目默认技术栈、主题模式和项目级包源,请继续阅读 前端项目规范。
适用场景
- Web 前端、管理后台、小程序和其他直接消费 HTTP API 的客户端。
- 前端与后端直接约定 JSON 字段结构的接口。
- 需要长期稳定演进的前后端联调协议。
必须遵守
- 前端消费的 JSON 字段统一使用
camelCase。 - API 返回给前端的标准数据包固定为
{ data, code, msg, errMsg, tid }。 - 不允许同一系统中混用
camelCase、PascalCase、snake_case作为前端默认字段风格。 - 时间字段在前后端传输时统一使用 Unix timestamp,精度统一为毫秒
ms。 - 禁止把 ISO 时间字符串作为前后端默认接口格式。
- 前端展示时间前必须转换为浏览器本地时间,前端输入本地时间后发送给服务端前必须转换为 UTC 时间戳。
推荐做法
- 在宿主层一次性配置前端接口所需的 Json 命名策略和时间转换器。
- 让前端只感知一套稳定协议,不让页面层直接兼容多种返回包或多种时间格式。
- 将接口联调文档、Swagger 示例、Mock 数据和真实接口保持一致。
- 对需要兼容旧接口的页面,在前端适配层显式转换,不把混乱传播到新页面。
运作机制
- C# 代码模型保持
PascalCase,数据库命名保持snake_case,前端契约保持camelCase,三者不需要也不应该强行统一成一种写法。 - 命名转换由序列化配置、ORM 命名约定和必要的 DTO / 映射层共同承担,不由页面或控制器零散手写。
- 框架提供
JsonNetSerializerSettings的多种命名策略装饰器,项目需要明确选择面向前端的稳定策略并保持全局一致。 - 返回包之所以固定,是为了让前端统一处理成功、业务错误和链路追踪,而不是为每个页面定制解析逻辑。
常见问题
- “C# 明明是
PascalCase,为什么前端还要看camelCase?” 因为代码风格和对外契约是两层规则。后端保持 C# 习惯,前端保持 JavaScript 生态习惯,转换由框架配置承担。 - “能不能少返回
errMsg或tid?” 不建议。errMsg和tid分别承担调试提示和链路追踪,不应靠前端猜测。 - “旧接口已经是
PascalCase怎么办?” 在兼容期可以保留,但必须在检查页中标记为偏差,并在适配层完成过渡。
相关检查
示例项目对照
- gmandarin-backend:前端与站点宿主并存,适合核对入口组织和本地时间视角处理。
- niusys-webapi:统一 Json 配置、统一封包、统一文档输出。
- 前端项目规范:前端默认技术栈、主题模式和项目级依赖源约定。
- 命名与数据转换规范:跨层命名转换说明。