Swagger.io OpenApi v3.0声明默认媒体类型

dy1byipe  于 9个月前  发布在  其他
关注(0)|答案(2)|浏览(70)

我正在使用Swagger.io Openapi V3.0
生成的openapi.yaml文件将响应内容媒体类型默认声明为*/*。我希望默认响应内容媒体类型为application/json
我知道你可以通过以下操作手动更改每个响应的媒体类型:

@ApiResponse(description = "test"
        , content = @Content(
            mediaType = "application/json",
            schema = @Schema(
                implementation = Test.class
            )
        )
    )

但这种方法不是最佳的,因为有许多React需要修改。
有办法改变mapstruct/openapi默认的媒体类型吗?

bybem2ql

bybem2ql1#

在Swagger(OpenAPI)3.0版中,响应内容的默认媒体类型是 /,这意味着它可以表示任何媒体类型。但是,如果您想为所有响应设置默认响应媒体类型为application/json,而不为每个响应显式指定它,则可以通过在OpenAPI规范中定义全局响应来实现这一点。
以下是如何在OpenAPI YAML文件中执行此操作:

openapi: 3.0.0
info:
  title: Your API
  version: 1.0.0
paths:
  /your-endpoint:
    get:
      responses:
        '200':
          description: Successful response
          content:
            application/json:   # Set the default media type here
              schema:
                type: object   # Adjust this schema definition accordingly
        # Add other response codes here as needed

通过在端点的responses部分的content部分下定义application/json媒体类型,可以将其作为200响应的默认媒体类型。您可以根据需要对其他响应代码执行此操作。
此方法允许您为特定响应代码设置默认媒体类型,而无需为每个端点单独指定。
希望我能帮上忙。

kxeu7u2r

kxeu7u2r2#

编辑

虽然swagger-core目前没有这个特性,但是另一种方法是使用JAX-RS并在类级别上定义@Produces(“your/mediaType”)。参见:https://docs.oracle.com/cd/E19798-01/821-1841/gipzh/index.html
由于openapi/swagger-core使用JAX-RS注解,而不是相反,因此这仍然适用于生成openapi.yaml

老帖子

我正在寻找的特定功能已被要求在OpenAPI ca中实现。2015年https://github.com/OAI/OpenAPI-Specification/issues/521
这是描述该功能需求的线程之一。看起来该特性的实现可能会在OpenAPI v4.0中实现,但尚未确认

相关问题