Swagger 相同的日期时间字段请求和响应之间的格式不同?

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

模型中有 StartDate 和 endDate 字段,数据类型为 DateTime。 Swagger POST PayLoad json 日期的默认值在末尾包含 Z

但是在 GET 请求中显示相同的字段作为响应,而没有 Z

您可以让我知道我这边需要完成任何 Swagger 配置吗?

c# asp.net-core swagger swagger-ui
1个回答
0
投票

您可以让我知道我这边需要完成任何 Swagger 配置吗?

这不太可能像您所说的那样,是一个 Swagger 配置 问题。

根据 RFC3339(OpenAPI 实现的互联网日期标准),响应中返回的日期时间值无效。为了根据此标准有效,时区部分必须包含在日期时间值中。来自RFC3339第5.6节

全日制 = 部分日制 时间偏移

时区部分可以是表示 UTC 时区的 Z,也可以是偏移量加或减一些整数小时和分钟,例如 +03:00

我的猜测是,OpenAPI 规范使 Swagger UI 能够生成 Swagger UI 屏幕截图中的示例,其中包含响应正文中字段 startDateendDate 的架构定义,该定义不将其中的值限制为仅日期时间格式。

OpenAPI 实现了 JsonSchema 进行类型定义,并根据 JsonSchema date-time 格式指令

日期和时间在 RFC 3339 第 5.6 节中表示。

因此,如果您修改 OpenAPI 规范中这些字段的定义以正确反映它们受日期时间限制的事实,那么一旦您还更新了规范中的示例,Swagger UI 就应该正确显示这些值。

例如,

components:
  schemas:
    MyResponseBody:
      type: object
      properties:
        startDate: 
          type: string
          format: date-time # <-- do this.
        endDate: 
          type: string
          format: date-time # <-- do this.
© www.soinside.com 2019 - 2024. All rights reserved.