【问题标题】:Which type of OpenAPI pattern format is valid?哪种类型的 OpenAPI 模式格式有效?
【发布时间】:2022-12-03 16:39:14
【问题描述】:

目前正在查看 openapi.yaml,它有两种不同格式的 pattern 字符串验证器。

    Country:
      pattern: ^(A(D|E|F|G|I|L|M|N|O|R|S|T|Q|U|W|X|Z)|B(A|B|D|E|F|G|H|I|J|L|M|N|O|R|S|T|V|W|Y|Z))$
      type: string
    Currency:
      pattern: /^AED|AFN|ALL|AMD$/
      type: string

文档根本没有将 / 显示为边界字符,那么这是有效还是无效?

我已经使用 Swagger Editor 输入了两者,但都没有给出错误。

【问题讨论】:

    标签: openapi


    【解决方案1】:

    pattern 的正确格式是 myregex(格式为 YAML 或 JSON 字符串,如果需要,可以进行适当的转义),而不是 /myregex//myregex/flags

    来源:https://github.com/OAI/OpenAPI-Specification/issues/1985

    有效模式的例子:

    # YAML
    pattern: d+      # not anchored
    pattern: ^d+$    # anchored
    
    pattern: 'd+'    # d+
    pattern: "\d+"   # d+
    
    # JSON
    "pattern": "\d+"     # d+
    "pattern": "^\d+$"   # ^d+$
    

    在您的示例中,Country 模式是正确的,而 Currency 模式不正确。

    对于 pattern: /^AED|AFN|ALL|AMD$/(相当于 pattern: "/^AED|AFN|ALL|AMD$/"),/ 被视为模式字符串本身的一部分,而不是边界字符。因此,此模式不会匹配任何内容,因为额外的字符出现在 ^...$ 之外。

    【讨论】:

      猜你喜欢
      • 2012-11-13
      • 2017-08-10
      • 2013-07-26
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 2018-06-15
      相关资源
      最近更新 更多