如何在 openapi 规范中定义可以是电子邮件格式或空字符串的属性(swagger)

How to define a propety that can be of an email format or an empty string in openapi specification (swagger)

提问人:troglodyte07 提问时间:11/17/2023 更新时间:11/18/2023 访问量:20

问:

我有一个电子邮件字段,用户将其作为 POST/PUT API 的一部分发送。我想使用 openapi 规范验证电子邮件是否采用正确的电子邮件格式(如果存在)。如果它以空字符串的形式给出,我不想进行检查。我怎样才能做到这一点。

我知道如何接受空值

email:
    type: string
    format: email
    nullable: true

但我想接受空字符串,而不是空。我们能为此做些什么,如下所示

email:
  type: string
  anyOf:
    format: email
    format: empty
Swagger OpenAPI

评论


答:

1赞 Jeremy Fiel 11/18/2023 #1

从技术上讲,不用于验证目的。这就是 OpenAPI 所基于的 JSON Schema 世界中所说的 an。它只是一个信息属性。某些验证程序或工具将使用此属性来增强验证结果,但这不是必需的。formatannotation

就您的情况而言,从 JSON 架构验证的角度来看,任何字符串值在技术上都是有效的,包括空字符串。

email:
  type: string
  format: email
  nullable: false