swagger OpenAPI是否像ExpressJS一样支持路径中的正则表达式?

jmp7cifd  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(97)

对于带有变音符号的语言,在路径中允许正则表达式是非常有用的,例如对于葡萄牙语单词código,同时允许codigocódigo,例如:

/c(o|ó)digo_postal/{cp}:
    get:
      operationId: getPostalcodeInfo
      summary: Detalhes sobre Código Postal (CP4 ou CP7)
      parameters:
        - in: path
          name: cp
          required: true
          schema:
            type: string
            pattern: /^\d{4}(\p{Dash}?\d{3})?$/u
          examples:
            cp4:
              value: '2495'
              summary: Código Postal CP4
            cp7:
              value: '2495-300'
              summary: Código Postal CP7
          description: Código Postal
        - $ref: '#/components/parameters/json'
      responses:
        '200':
          description: Detalhes sobre Código Postal CP4 ou CP7
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/CP4'
                - $ref: '#/components/schemas/CP7'
        '404':
          description: Código Postal não encontrado
          content:
            application/json:
              schema:
                type: string

字符串
但它在我的验证器上失败了。我读了specs,但他们没有提到任何东西。

6tdlim6h

6tdlim6h1#

OpenAPI不支持路径中的正则表达式。
不过它确实支持引用,因此您可以将两个路径作为同一个Path Item的简单$ref条目,从而有效地实现您在这里建议的内容。
我认为另一种选择是简单地使用一个经过消毒的字符串(我想我无论如何都会对路径这样做),但作为一个只说英语的人,我不知道这在上下文中是否有意义。

相关问题