Создайте общий путь вместе с конкретным в openapi v3 - PullRequest
0 голосов
/ 07 апреля 2019

Я использую модуль express-openapi npm для сервера node.js.Мне нужно для этой цели создать общий URL-адрес с использованием openapi v3, как этот / ressources / {action}, который будет включать все типы действий, ожидайте несколько, которые я описал конкретно как / ressources / action1 и / ressources / action2 Вот как я описалуниверсальный параметр в пути URL:

    action:
      name: action
      in: path
      required: true
      schema:
        type: string
        not:
          enum: ['action1', 'action2']

Отдельные URL-адреса описываются отдельно без параметра пути.

Проблема заключается в том, что всякий раз, когда я запускаю сервер и вызываю, например, / ressources / action1, еговызывает универсальный URL.Я думаю, что есть проблема с общим перечислением параметров пути действия.Может ли кто-нибудь помочь выяснить, как правильно сопоставить мой запрос с соответствующим URL-адресом в этой ситуации?

Я также попытался перечислить все возможные общие действия, например:

    action:
      name: action
      in: path
      required: true
      schema:
        type: string
        enum: ['action3', 'action4', 'action5', 'action6']

, но action1 и action2всегда соответствует универсальному URL

1 Ответ

1 голос
/ 08 апреля 2019

Оба определения верны и соответствуют Спецификации OpenAPI :

При сопоставлении URL-адресов конкретные (не шаблонные) пути будут сопоставляться перед их шаблонными аналогами.

...

Соответствие шаблону пути

При условии, что следующие пути, конкретное определение, /pets/mine, будет соответствовать первому, если используется:

/pets/{petId}
/pets/mine

Тот факт, что сервер всегда выбирает общий URL-адрес, является ошибкой (или невыполненной функцией?).Вы должны открыть проблему с любой используемой вами серверной платформой.

...