首页 > 解决方案 > 如何在 OpenAPI 3 中正确定义可为空属性的示例?

问题描述

我在 Spring Boot 中使用 OpenAPI 和 openapi-generator-maven-plugin。我正在尝试在我的响应中创建一个示例对象。我遵循了几个不同网页的建议,尤其是这个:

https://swagger.io/docs/specification/adding-examples/

但无论我尝试什么,我都无法正确显示示例数据。这里应该在请求中的对象:

Period:
  type: object
  required:
    - startDate
    - endDate
  properties:
    startDate:
      type: string
      format: date
      nullable: true
      example: "2021-01-01"
    endDate:
      type: string
      format: date
      nullable: true
      example: "2030-01-01"

CreateInstancesRequest:
  type: object
  required:
    - id
  properties:
    id:
      $ref: '#/components/schemas/Id'
    period:
      allOf:
        - $ref: '#/components/schemas/Period'

但我得到的不是我想要的:

在此处输入图像描述

我期待这样的事情:

{
  "id": "some-id",
  "period": {
    "endDate": "2020-01-01",
    "startDate": "2022-01-01"
  }
}

但也许我错了,因为为 Period 类生成了 java 代码: 在此处输入图像描述

我认为present实际示例中的属性来自org.openapitools.jackson.nullable.JsonNullable类。

Jackson 的对象映射器配置如下:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JsonNullableModule());
objectMapper.registerModule(new JSR310Module());
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);

你能帮我吗?

标签: javaspring-bootopenapiopenapi-generator

解决方案


推荐阅读