openapi-generator生成scala-play-server代码时additionalProperties缺类型
解决openapi-generator生成scala-play-server代码时Tag模型additionalProperties缺类型的问题
以下是几个非hack式的解决思路:
修正OpenAPI规范文件
问题根源在于petstore.json里的Tag schema未明确additionalProperties的规则。直接修改规范文件,给Tag添加明确的additionalProperties定义:- 如果不需要允许额外属性,添加
"additionalProperties": false:"Tag": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" } }, "additionalProperties": false } - 如果需要允许任意额外属性,指定其类型(比如字符串类型):
"Tag": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "name": { "type": "string" } }, "additionalProperties": { "type": "string" } }
修改后重新执行生成命令,代码会自动带上合法的类型定义。
- 如果不需要允许额外属性,添加
使用生成器配置文件指定默认类型
创建一个配置文件(比如generator-config.json),设置modelAdditionalProperties参数来指定额外属性的默认类型:{ "modelAdditionalProperties": "Map[String, AnyRef]" }然后执行生成命令时指定配置文件:
openapi-generator generate -i petstore.json -g scala-play-server -c generator-config.json这个参数会让生成器为未明确指定的
additionalProperties生成合法的Scala Map类型。升级openapi-generator到最新版本
你遇到的可能是旧版本生成器的bug,很多类似的类型生成问题在新版本中已经修复。使用最新稳定版的openapi-generator-cli重新尝试生成,比如通过以下命令升级(如果用的是npm安装的版本):npm install -g @openapitools/openapi-generator-cli或者下载官方最新的jar包执行生成。
内容的提问来源于stack exchange,提问作者Dima
相关产品推荐
相关产品推荐

