主线课程/2

2 课:用 AI 做接口设计与数据建模

先把契约讲清楚,再进入实现

接口设计DTO数据建模2h

接口和数据模型是后端协作里的“公共语言”。这一步如果没讲清楚,AI 帮你写得再快,后面联调、测试和文档都会跟着出偏差。所以这一课的重点不是“让 AI 自动生成 DTO”,而是学会用 AI 更快暴露边界、比较方案、补齐异常和字段语义。

真实研发场景

大多数接口问题不是编码时出现,而是在契约阶段埋下

一个功能刚进入设计时,经常会出现这种对话:“先把接口写出来,细节后面再补。”结果是 DTO 很快有了,字段名也不少,看起来一切都在推进。但等前端开始联调、测试开始造样例、文档开始补说明时,问题一批批冒出来:字段到底是必填还是可选、错误码怎么分类、列表接口要不要分页、时间字段用什么格式、这个响应对象到底是不是应该带状态字段。

如果这时让 AI 直接“生成一版完整接口”,模型往往会非常积极地把你没说清楚的地方补齐。危险就在这里:它补齐得越像样,团队越容易误以为契约已经定了。

本课真正要建立的是“先讲场景,再讲字段”

一个稳定的接口设计流程,应该先回答使用场景、调用方、状态变化、异常语义,再去写字段和类定义。AI 的价值就在于帮助你把这些信息组织成字段矩阵、错误表和方案对比,而不是一开始就产出最终 Java 类。

传统做法的痛点

契约一旦模糊,所有协作方都会被迫猜

协作方看似拿到了什么实际还缺什么
前端一组字段名字段何时出现、何时为空、何时报错
测试一个示例 JSON边界值、异常码、状态流转
文档维护者一个接口草稿语义说明、版本策略、兼容性
后端自己一份 DTODTO 与领域对象、配置对象的边界

这也是为什么“接口已经有了”不代表“接口已经设计完了”。

AI 参与建模时最容易放大的三个问题

  • 字段过量:模型会倾向于补出“可能用得上”的字段,导致响应体越来越胖
  • 边界混杂:把传输模型、领域模型、配置模型写成一团
  • 命名失真:字段名语义看起来专业,但和真实业务动作不一致

这些问题不一定会马上炸,但会在联调和维护时持续制造摩擦。

AI 能提效到哪一步

最值得让 AI 起草的是这些内容

  • 字段矩阵:字段名、类型、是否必填、来源、默认值
  • 错误场景表:什么条件下返回什么错误码或状态
  • 请求响应示例:帮助团队快速对齐调用形状
  • 契约对比:同步接口 vs 异步任务、精简响应 vs 富响应

必须由工程师拍板的内容

内容为什么不能直接让 AI 决定
版本兼容策略影响历史调用方和升级成本
字段是否公开涉及隐私、权限和职责边界
DTO 与领域模型边界影响后续维护和重构成本
错误码体系影响前后端协作与可观测性

一个简单判断是:凡是会影响多个调用方长期协作的地方,都不该只靠模型自动补全。

推荐工作流

先给 AI 的不应该是类定义,而是场景约束

推荐先准备这些输入:

  • 这个接口服务谁
  • 调用时机和业务动作是什么
  • 成功和失败各有哪些状态
  • 哪些字段来自已有代码或配置
  • 哪些约束已经定了,哪些还没定

用四步把契约从“猜字段”变成“对齐语义”

步骤AI 产出人工要做什么验证方式
1. 讲场景调用方、目标、状态清单删除不真实的业务假设是否能不用写类就讲清行为
2. 生字段矩阵字段表、必填性、示例值砍掉冗余字段,统一命名字段是否都能解释来源与语义
3. 补错误表错误码、异常条件、边界场景确认哪些错误需要暴露测试是否能据此补样例
4. 回写代码DTO 草稿、配置对象草稿审核分层与兼容性JSON 示例、测试或接口评审

一个实用输入模板

md
业务动作:
调用方:
成功结果:
失败结果:
已有字段或配置来源:
请输出:
1. 请求/响应字段矩阵
2. 错误场景表
3. 两种可选契约方案及取舍

与仓库代码和模板的映射

常见误用与风险

误用一:让 AI 直接生成“完整 DTO”,却没先讲调用场景

模型会默认替你补齐很多字段,这些字段未必真的有业务语义。

误用二:把传输对象和领域对象混为一谈

这会让后续重构、校验和兼容性处理都变得更难。

误用三:只有 happy path,没有异常表

没有错误表的接口设计几乎一定会在联调阶段返工。

误用四:看到字段很多就以为设计很完整

字段数量不等于契约质量,关键是每个字段是否有明确语义、来源和边界。

课后练习

建议直接在 ../课后练习/第2课/练习.md 中完成本课练习,并使用 ../课后练习/通用提交模板.md 保留 AI 输入、人工删改和验证结果。

如果你只做最小版交付,也至少保留四样东西:结构化输入、AI 产出摘要、人工判断记录、最终验证结果。

基础题

选一个你熟悉的接口场景,先不要写 Java 类,只写请求/响应字段矩阵。

进阶题

补一份错误场景表,覆盖参数错误、权限错误和业务失败三类情况。

挑战题

对照 demo/ 中的一个响应对象,给出两种可选契约方案,并说明你会选择哪一种以及原因。