我有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
当我在https://editor.swagger.io中单击“执行”时,生成的Curl如下所示:
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: */*"
是否可以这样做?我在文档中找不到有关设置自定义分度的任何信息。
答案 0 :(得分:1)
简短答案:否。
serialize parameters未涵盖您的特定用例,它们遵循rfc6570-如果您想设计一个公认的Web api,则遵循标准是一个好主意。
您指定了explode: false
和style:form
。
开启explode:true
时,您会得到以下提示:
city=atlanta&zip=303
当您指定style:deepObject
时,您将获得:
origin[city]=atlanta&origin[zip]=303
spaceDelimited
和pipeDelimited
样式不适用于对象。
在没有模式的情况下工作
您可以在没有模式的情况下进行工作,并定义origin
类型的string
查询参数。
该文档应准确解释您的期望,并提供一个小示例,以帮助人们使用您的API。
我不会在开放的API中使用该模式,但这可能是内部API的一种解决方法。