如何指定像/ pets / {id}这样的路径,但有多个id?

时间:2016-03-10 13:20:25

标签: api rest swagger

我想创建一个路径,接受用逗号分隔的任意数量的ID。它应该接受以下所有内容:

GET /pets/1,2  # returns info about pets with ids 1, 2
GET /pets/4,10,12,124,2  # same, for pets with ids 4, 10, 12, 124, 2

这本书"建立你不会厌恶的apis"给了我这个想法。 我如何以昂首阔步的方式做到这一点?

1 个答案:

答案 0 :(得分:6)

Swagger 2.0支持collectionFormat参数。来自documentation

  

如果使用类型array,则确定数组的格式。可能的值有:

     
      
  • csv:逗号分隔值:foo,bar
  •   
  • ssv:空格分隔值:foo bar
  •   
  • tsv:制表符分隔值:foo\tbar
  •   
  • pipes:管道分隔值:foo|bar
  •   
  • multi:对应于多个参数实例,而不是单个实例foo=bar&foo=baz的多个值。这仅对" query"中的参数有效。或" formData"。
  •   
     

默认值为csv

可以在documentation上看到使用示例:

{
  "get": {
    "description": "Returns pets based on ID",
    "summary": "Find pets by ID",
    "operationId": "getPetsById",
    "produces": [
      "application/json",
      "text/html"
    ],
    "responses": { ... }
  },
  "parameters": [
    {
      "name": "id",
      "in": "path",
      "description": "ID of pet to use",
      "required": true,
      "type": "array",
      "items": {
        "type": "string"
      },
      "collectionFormat": "csv"
    }
  ]
}