Swagger-Codegen v3.0.24:如何让部分接口不启用useGenericResponse?
问题
使用swagger-codegen-cli v3.0.24(暂无法升级至最新版)生成jaxrs-cxf服务器API时,可在config.json中设置useGenericResponse为true,让所有接口返回javax.ws.rs.core.Response类型。但需求是仅部分接口需要通用响应类型,其余接口希望返回显式定义的DTO类型。尝试在接口操作中显式指定返回结构(如下示例),但无法覆盖全局设置,询问是否有解决办法;若没有,是否只能分开生成两种类型的接口?
示例OpenAPI定义:
paths: /sample: get: responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/SampleDTO'
解决思路与方案
针对swagger-codegen-cli v3.0.24的限制,有两种可行方向:
操作级别覆盖全局配置:利用swagger-codegen的扩展字段,在不需要通用响应的接口操作中添加
x-codegen-settings,显式关闭useGenericResponse。修改后的示例如下:paths: /sample: get: x-codegen-settings: useGenericResponse: false responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/SampleDTO'这个扩展字段在v3.0.24的jaxrs-cxf生成器中支持,可直接覆盖全局的
useGenericResponse设置,让当前接口返回显式定义的DTO类型。拆分文档分别生成:如果上述扩展字段无法生效(比如个别版本兼容性问题),只能将OpenAPI文档拆分为两个部分:一部分包含需要通用响应的接口,另一部分包含需要特定DTO返回的接口。分别使用不同的
config.json(一个开启useGenericResponse,一个关闭)生成代码,最后将生成的接口类合并到项目中即可。
内容的提问来源于stack exchange,提问作者Michael Rudd
相关产品推荐
相关产品推荐

