API Document Validation
1. API Swagger 文档改进事项
1.1 API Endpoint(Method + Path) 的描述不足
-
多数 API 的 Summary / Description 字段为空或内容无意义
-
예시:
-
"Summary": "modifyAdminFailCntReset" (由 JAVA 框架自动生成)
-
Description: “” (为空)
-
(以下示例为 bw-core-auth Swagger 文档)

-
(良好构建的 Swagger 示例)

-
-
예시:
-
문제점:
- 意义不明的 Summary 使得 API 用途区分困难(存在多个相似 Summary 的 API)
- “这个 API 是为了什么而创建的”,“在什么业务场景中使用” 一目了然
- 문서 기반 협업·자동화의 가치를 활용할 수 없음 → Swagger는 있지만, 실질적으로는 구전/샘플 JSON에 의존하는 형태
1.2 Request Body(JsonNode) Parameter 미정의
-
该参数是“数组/对象/数字/字符串” ALL Type JSON 트리 메타 정보(모든 요청을 받을 수 있는 형태)만 제공
- 예시: Bizapi-test-prod 的 “/v1/search/dsnet/addr-avail-prod-list 외 3개 Endpoint”

- 예시: Bizapi-test-prod 的 “/v1/search/dsnet/addr-avail-prod-list 외 3개 Endpoint”
-
문제점:
- 从查看 Swagger 的客户端开发者的角度,无法识别需要输入哪些键/值
- “请求示例请求”,“字段说明请求”等 커뮤니케이션 비용 발생
1.3 동일 Endpoint의 다중 Swagger 파일 중복 정의
-
在不同的 Swagger 文件中,重复定义相同路径/方法/功能的 API
- 示例: /v1/op/cert-sms-confirm, /v1/op/cert-sms-send 在 auth 和 bizapi-test-auth 中重复

- 示例: /v1/op/cert-sms-confirm, /v1/op/cert-sms-send 在 auth 和 bizapi-test-auth 中重复
-
问题:
- 不清楚应该信任哪个 Swagger 文件
- 随着时间推移,可能只修改一方文件的 스펙 드리프트(drift) 风险
- 修改相同 API 时 여러 파일을 동시에 수정해야 하는 유지보수 비용
2. 점진적 개선 타임라인 (4개월)
2.1 ~2개월차: Endpoint 문서 품질 개선 (Summary / Description)
-
목표
- 所有主要 API 填写“人可以理解的”摘要/描述,以便一目了然地了解用途和场景
-
주요 액션
- 摘要:将自动生成的方法名样式(如 modifyAdminFailCntReset)更改为基于业务术语(例如:modifyAdminFailCntReset → 管理员登录失败次数初始化)
- 描述:在空描述中添加至少 1~2 行以上的详细说明
- “在什么情况下由谁调用”
- “核心参数/限制简单整理”
-
검증/운영 방식
-
通过 APIM 文档验证检查摘要/描述的存在性、最小长度等
-
초기에는 Warning으로 시작(Slack 공유),逐步转换错误
-
(以下是应用 APIM “检查操作描述”后的验证结果)

-
(通过 Slack 渠道将该结果分享给相关人员)

-
-
기대 효과
- 仅通过 Swagger 就可以选择使用哪个 API
- 之后为合并重复 API 和移除 JsonNode 的工作提供基础信息
2.2 ~3개월차: JsonNode Request Body 개선 (핵심 필드 명세화)
-
목표
- 在基于 JsonNode 的请求体中,关于“业务核心 API”的 최소한의 필드 계약을 Swagger에 나타냄
-
주요 액션
- 识别使用 JsonNode 的 API
- /v1/search/dsnet/addr-avail-prod-list, /v1/search/dsnet/hq-gift-list, /v1/search/dsnet/prom-list 等
- 仅将“所需的核心字段”分离为单独的模式
- 示例:添加 AddrAvailProdRequest 等定义
- 识别使用 JsonNode 的 API
AddrAvailProdRequest:
type: object
properties:
addrId:
type: string
description: "地址 ID"
svcType:
type: string
description: "服务类型"
required: [addrId, svcType] # 核心参数声明
additionalProperties: true # 其他键允许为任何值
-
明确 addrId、svcType、userId 等必填字段
-
其他附加字段可灵活允许为 additionalProperties: true / extra 字段等
-
검증/운영 방식
- 使用 Spectral 将对 #/definitions/JsonNode 的直接引用处理为警告
-
新的 API 将 JsonNode 的使用处理为 Warning/Error,并指导必须使用具体的模式
-
(以下是应用 APIM “Check JsonNode Schema” 规则集后的验证结果)

-
(通过 Slack 渠道将该结果分享给相关人员)

-
-
기대 효과
- 客户端开发者仅通过 Swagger 就能知道应该输入哪些键/值
- 减少以样本 JSON 请求为主的口头文化
2.3 ~4개월차: 중복 API 탐지 및 제거
-
목표
- 识别在不同 Swagger 文件中重复定义的 Endpoint,并进行整合/整理以增加可重用性
-
주요 액션
- 通过即将生成的重复 API 检测规则集,自动提取基于 method + path 的重复 Endpoint 列表
- 例如:/v1/op/cert-sms-confirm 和 /v1/op/cert-sms-send 在 auth 和 bizapi-test-auth 两个文件中存在
- 之后,团队将进行审查并决定哪些文件需要被标记为弃用后删除
-
검증/운영 방식
- 在 CI 中生成重复 Endpoint 报告(Warning 或失败标准需组织达成一致)
- 新的 API 将指导“确认是否重用现有路径 → 新建”的流程
-
기대 효과
- 解决同一功能的 API 分散在多个文档中的情况
- 在变更时明确“需要修改哪里”,降低维护成本
- 整理构建公共/共享 API 库的基础