提问者:小点点

如何定义多个值由等于号(=)分隔的查询参数?


我对这个URLAPI:

/api/doSomething?key=value1=value2

这可以在Swagger/OpenAPI 3.0中表示吗?如果是这样,那会是什么样子?如果没有第二个value e2,我会这样指定它:

  /api/doSomething:
    get:
      summary: ''
      parameters:
      - in: path
        name: key
        description: ''
        required: true
        schema:
          type: string

共2个答案

匿名用户

OpenAPI在查询字符串中支持以下数组值分隔符:, | 。OpenAPI 2.0还支持\t

=不支持作为数组值的分隔符。

您最多可以将您的key参数记录为type: string并在描述中解释格式。假设您使用openapi:3.0.0

parameters:
  - in: query
    name: filter
    required: true
    schema:
      type: string
    description: A list of values separated by `=`.
    example: value1=value2

另请注意,=是一个保留字符。在OpenAPI 3.0中,查询参数具有额外的允许保留属性,该属性控制保留字符是按原样发送还是按百分比编码发送。

allowReserved: true
/api/doSomething?key=value1=value2
                           ^ 
allowReserved: false
/api/doSomething?key=value1%3Dvalue2
                            ^ 

匿名用户

参数对象可能包含一个允许保留选项,该选项允许在参数值中使用保留字符,例如=。以下内容适合您吗?

/api/doSomething:
   get:
     summary: ''
     parameters:
     - in: path
       name: key
       description: ''
       required: true
       allowReserved: true
       schema:
         type: string