Я использую модуль npm express-openapi для сервера 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-адресу





Оба определения верны и согласно Спецификация OpenAPI:
When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts.
...
Path Templating Matching
Assuming the following paths, the concrete definition,
/pets/mine, will be matched first if used:/pets/{petId} /pets/mine
Тот факт, что сервер всегда выбирает общий URL-адрес, является ошибкой (или нереализованной функцией?). Вы должны открыть проблему с любой серверной структурой, которую вы используете.
Нет, это проблема с бэкэнд-фреймворком, который вы используете. Откройте заявку в службу поддержки у поставщика этой платформы.
Спасибо Елена, я создам тикет
Проблема в том, что выбираются оба определения, сначала конкретное, а затем общее... Таким образом, обработка выполняется дважды... это то, как оно должно себя вести?