使用Swagger 2.0描述一系列复杂对象

时间:2016-06-29 01:12:16

标签: swagger swashbuckle

我有一个Web Api 2项目,它有一个HttpGet方法,它以复杂对象列表作为参数。像这样:

[HttpGet]
public string GetCoolStuff(List<ContainerContract> containers)

我正在使用swashbuckle来设置我的招摇文档。但它将此参数设置为:

{
  "name" : "containerContracts",
  "in" : "query",
  "required" : true,
  "type" : "array",
  "items" : {},
  "collectionFormat" : "multi"
}

至少items对象似乎需要它。

稍后在definitions部分,我确实找到了这个:

"ContainerContract" : {
    "type" : "object",
    "properties" : {
        "Type" : {
            "type" : "string"
        },
        "Temperature" : {
            "type" : "string"
        },
        "CreatedWhen" : {
            "format" : "date-time",
            "type" : "string"
        }
    }

但它似乎没有被使用......

有没有一种方法可以让我这样设置让他们明白这是一个对象列表,并为我提供了输入各个属性值的方法?(就像我对复杂对象一样)这不是清单。)

以下是我在图片中的含义:

SwaggerArrays

或者Swagger Ui不是那么聪明吗? (如果我必须写Json来填写我的名单,那么我可以。)

重要的是,这是ContainerContract的一个例子:

public class ContainerContract
{
    public string Type { get; set; }
    public char Temperature { get; set; }
    public DateTime CreatedWhen { get; set; }
}

1 个答案:

答案 0 :(得分:3)

遗憾的是,在2.0规范(Swashbuckle使用)中,即使在数组中,也不能在查询参数中包含复杂对象。因此,在下一个版本之前不支持您要做的事情。您可以拥有一个数组,但items必须是原始值类型。