Swagger useGenericResponse 与特定端点

问题描述 投票:0回答:1

现在,使用 swagger-codegen-cli v3.0.24(目前无法使用最新版)生成 jaxrs-cxf 服务器 API,我可以将 config.json 中的属性

useGenericResponse
设置为 true 以支持使用
 javax.ws.rs.core.Response
类。这太棒了。我花了很长一段时间才弄清楚这一点。我遇到的下一个问题是,并非 API 中的所有端点都使用该类作为响应,但该属性在生成期间将 API 中的所有响应设置为该类型。有办法解决这个问题吗?如果没有,我猜我将不得不与特定响应分开生成通用响应。

在不同的操作中设置响应类型不会覆盖全局设置......至少不会以“传统”方式,如下所示。我认为像这样显式定义返回类型会覆盖每个位置的通用属性。

paths:
    /sample:
        get:
            responses:
                '200':
                    description: OK
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/SampleDTO'
generics jax-rs response swagger-codegen
1个回答
0
投票

似乎没有固有的方法可以通过配置或标准 OpenAPI 约定来做到这一点。我发现创建一个供应商扩展来保存一个布尔值,以确定是否在每个操作中使用该类响应,然后在模板文件中使用它是覆盖它的一种方法。具体来说,使用 JavaJaxRS 自定义

returnTypes.mustache
模板。

YAML 示例:

openapi: 3.0.1
info:
servers:
paths:
    /sample:
        get:
            x-response: true

returnTypes.mustache 更改:

{{#vendorExtensions.x-response}}Response{{/vendorExtensions.x-response}}{{! non-generic response:}}
{{^vendorExtensions.x-response}}{{!
}}{{{returnType}}}{{!
}}{{/vendorExtensions.x-response}}

需要考虑的一件事是,这样做将覆盖

useGenericResponse
标志。如果您想继续使用该选项,则必须考虑模板中是否设置了该选项。

© www.soinside.com 2019 - 2024. All rights reserved.