使用go-swagger生成API客户端时,如何为不同分组配置不同模型包?
解决go-swagger不同分组指定不同模型包的问题
有两种可行的方案:
分批次生成后合并
利用go-swagger的分组生成能力,分两次执行客户端生成命令,分别为每个分组指定对应的模型包:- 生成task分组的客户端:
swagger generate client --spec=swagger.yaml --group=task --existing-models=my/task/models --output=./client/task - 生成file分组的客户端:
swagger generate client --spec=swagger.yaml --group=file --existing-models=my/file/models --output=./client/file
之后可以把两个目录下的代码整合到同一个客户端项目里,注意处理好导入路径和可能的命名冲突。
- 生成task分组的客户端:
在Swagger规范中指定模型的Go包
直接在Swagger YAML/JSON的定义里,给每个模型加上x-go-package扩展字段,明确指定该模型对应的预定义包路径,这样生成客户端时无需依赖--existing-models参数,swagger会自动匹配:definitions: TaskModel: x-go-package: my/task/models type: object properties: id: type: string name: type: string FileModel: x-go-package: my/file/models type: object properties: path: type: string size: type: integer然后执行通用的生成命令即可:
swagger generate client --spec=swagger.yaml --output=./client这种方式更简洁,也能从根源上避免分组和模型包不匹配的问题。
内容的提问来源于stack exchange,提问作者dayeguilaiye
相关产品推荐
相关产品推荐

