Swagger 如何使用自定义delimeter序列化查询对象

Swagger 如何使用自定义delimeter序列化查询对象,swagger,swagger-ui,openapi,Swagger,Swagger Ui,Openapi,我有yaml文件: openapi: 3.0.1 info: title: My API version: v1 paths: # /users;id=3;id=4?metadata=true /users: get: parameters: - in: query name: offset schema: type: integer description:

我有yaml文件:

openapi: 3.0.1
info:
  title: My API
  version: v1
paths:
  # /users;id=3;id=4?metadata=true
  /users:
    get:
      parameters:
        - in: query
          name: offset
          schema:
            type: integer
          description: The number of items to skip before starting to collect the result set
        - in: query
          name: limit
          schema:
            type: integer
          description: The numbers of items to return
        - in: query
          name: origin
          style: form
          explode: false
          schema:
            type: object
            properties:
              city:
                type: string
              zip:
                type: string
      responses:
        '200':
          description: A list of users
当我在中单击“执行”时,生成的旋度如下所示:

curl -X GET "https://editor.swagger.io/users?offset=2&limit=12&origin=city,atlanta,zip,303" -H "accept: */*"
curl -X GET "https://editor.swagger.io/users?offset=2&limit=12&origin=city:atlanta|zip:303" -H "accept: */*"
但是,我需要这样:

curl -X GET "https://editor.swagger.io/users?offset=2&limit=12&origin=city,atlanta,zip,303" -H "accept: */*"
curl -X GET "https://editor.swagger.io/users?offset=2&limit=12&origin=city:atlanta|zip:303" -H "accept: */*"

有可能这样做吗?我在文档中找不到有关设置自定义测厚仪的任何信息。

简短回答:

您的特定用例未包含在中,它们遵循-如果您想要设计一个广为接受的web api,遵循标准是一个好主意

您指定了
explode:false
style:form
。 当您打开
explode:true
时,您将得到以下结果:

city=atlanta&zip=303

当您指定
样式:deepObject
时,您将得到:

origin[city]=atlanta&origin[zip]=303

spaceDelimited
pipeDelimited
样式不适用于对象

无模式工作

您当然可以在没有架构的情况下工作,并定义类型为
string
origin
查询参数。 文档应该准确地解释您的期望,一个小示例将帮助人们使用您的API

我不会将该模式用于开放API,但这可以作为内部API的一种变通方法