Строковый параметр без учета регистра в схеме openApi - PullRequest
4 голосов
/ 20 марта 2020

У меня есть открытый API spe c с таким параметром:

- name: platform
  in: query
  description: "Platform of the application"
  required: true
  schema:
    type: string
    enum:
      - "desktop"
      - "online"

когда я получаю параметр "platform" из URL, он может выглядеть следующим образом:

platform=online or 
platform=ONLINE or 
platform=Online or 
platform=onLine  or ... any other format

но когда я собираюсь его использовать, он действителен только в том случае, если все параметры строчные, как "platform = online" , очевидно, для соответствия значению перечисления.

how я могу сделать схему так, чтобы она не учитывала регистр и понимала все типы передаваемых параметров?

1 Ответ

4 голосов
/ 20 марта 2020

Перечисления чувствительны к регистру. Чтобы иметь схему без учета регистра, вы можете использовать вместо этого регулярное выражение pattern:

- name: platform
  in: query
  description: 'Platform of the application. Possible values: `desktop` or `online` (case-insensitive)'
  required: true
  schema:
    type: string
    pattern: '^[Dd][Ee][Ss][Kk][Tt][Oo][Pp]|[Oo][Nn][Ll][Ii][Nn][Ee]$'

Обратите внимание, что pattern является самим шаблоном и не поддерживает буквальный синтаксис JavaScript regex (/abc/i), что означает, что вы не можете указать flags like i (поиск без учета регистра). В результате вам нужно указать прописные и строчные буквы в самом шаблоне.

В качестве альтернативы укажите возможные значения в description, а не в pattern / enum, и проверьте значения параметров на внутреннем конце.

...