带括号和变量名的 OpenAPI 参数
OpenAPI parameter with brackets and variable name
我正在开发一个 API,它允许使用如下 URL 进行搜索:
GET https://example.com/api/data?search[field1]=value1
GET https://example.com/api/data?search[field2]=value2
GET https://example.com/api/data?search[field1]=value1&search[field2]=value2
基本上,您可以通过将字段名称放在括号中来搜索一个或多个字段值。问题是,字段名称是由用户在其设置中定义的。字段名称将是一个字符串,但在全局级别无法提前获知。
几乎是我想要做的,我只是找不到一种方法来将括号内的值定义为 "any string" 而不是已知名称列表。
search
参数可以定义为 with the deepObject
serialization style 和 minProperties: 1
以强制在搜索查询中出现至少一个字段。
确保您使用的是 OpenAPI 3.0 (openapi: 3.0.x
) 而不是 OpenAPI 2.0 (swagger: "2.0"
);后者不支持查询字符串中的对象。
openapi: 3.0.2
...
paths:
/api/data:
get:
parameters:
- in: query
name: search
required: true
schema:
type: object
additionalProperties: true # Default value, may be omitted
minProperties: 1
# Optional example to use as a starting value for "try it out" in Swagger UI
example: >
{
"field1": "value1",
"field2": "value2"
}
style: deepObject
explode: true
responses:
200:
description: OK
我正在开发一个 API,它允许使用如下 URL 进行搜索:
GET https://example.com/api/data?search[field1]=value1
GET https://example.com/api/data?search[field2]=value2
GET https://example.com/api/data?search[field1]=value1&search[field2]=value2
基本上,您可以通过将字段名称放在括号中来搜索一个或多个字段值。问题是,字段名称是由用户在其设置中定义的。字段名称将是一个字符串,但在全局级别无法提前获知。
search
参数可以定义为 deepObject
serialization style 和 minProperties: 1
以强制在搜索查询中出现至少一个字段。
确保您使用的是 OpenAPI 3.0 (openapi: 3.0.x
) 而不是 OpenAPI 2.0 (swagger: "2.0"
);后者不支持查询字符串中的对象。
openapi: 3.0.2
...
paths:
/api/data:
get:
parameters:
- in: query
name: search
required: true
schema:
type: object
additionalProperties: true # Default value, may be omitted
minProperties: 1
# Optional example to use as a starting value for "try it out" in Swagger UI
example: >
{
"field1": "value1",
"field2": "value2"
}
style: deepObject
explode: true
responses:
200:
description: OK