You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:43:15