Создайте общий путь вместе с конкретным в openapi v3

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
179
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оба определения верны и согласно Спецификация 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-адрес, является ошибкой (или нереализованной функцией?). Вы должны открыть проблему с любой серверной структурой, которую вы используете.

Проблема в том, что выбираются оба определения, сначала конкретное, а затем общее... Таким образом, обработка выполняется дважды... это то, как оно должно себя вести?

cartman 17.05.2019 14:50

Нет, это проблема с бэкэнд-фреймворком, который вы используете. Откройте заявку в службу поддержки у поставщика этой платформы.

Helen 17.05.2019 14:55

Спасибо Елена, я создам тикет

cartman 17.05.2019 15:48

Другие вопросы по теме