如何配置OpenAPI规范避免swagger-codegen等工具转换无时区日期格式
解决方法
问题原因
Swagger Codegen和OpenAPI Generator存在默认类型推断逻辑:如果未给string类型参数显式指定format,且example内容符合日期时间特征,会自动将该字段识别为date-time类型,强制转换为带时区的ISO 8601格式展示。
修复方案
在你定义的string类型日期时间字段的schema中新增2项配置,即可关闭自动转换:
- 显式指定自定义非标准format,避免被识别为默认的
date-time格式 - 新增pattern规则,明确匹配你需要的无时区日期时间格式,阻断自动类型推断
修改后的对应schema代码片段如下:
# 路径参数部分修改 schema: type: string format: local-datetime # 自定义format,标识为本地无时区时间 pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$' # 匹配你需要的日期时间格式 example: "2021-09-01 00:00:00" # 返回体字段部分同理修改 dateTime2: type: string format: local-datetime pattern: '^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$' example: "2021-09-01 00:00:00"
生效验证
修改test.yml文件后,重新执行原有生成命令启动服务,访问UI后即可看到example会原样展示为2021-09-01 00:00:00,不会被自动转换。

内容的提问来源于stack exchange,提问作者Alumuko
相关产品推荐
相关产品推荐

