我有一个开放的 API 规范,其参数如下:
- name: platform
in: query
description: "Platform of the application"
required: true
schema:
type: string
enum:
- "desktop"
- "online"
当我从 URL 获取“平台”参数时,它可以是这样的:
platform=online or
platform=ONLINE or
platform=Online or
platform=onLine or ... any other format
但是当我要使用它时,只有参数全部小写才有效,例如“平台=在线”,显然是为了匹配枚举值。
如何使模式不区分大小写并理解所有类型的传递参数?
枚举区分大小写。要拥有不区分大小写的架构,您可以使用正则表达式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 正则表达式文字语法 (/abc/i
),这意味着您不能指定flags https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_searching_with_flags like i
(不区分大小写的搜索)。因此,您需要在模式本身中指定大写和小写字母。
或者,在中指定可能的值description
而不是在pattern
/enum
,并在后端验证参数值。
以下是 JSON Schema 存储库中的相关讨论(OpenAPI 使用 JSON Schema 来定义数据类型):不区分大小写的枚举? https://github.com/orgs/json-schema-org/discussions/148
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)