使用Swagger和ServiceStack记录响应类

时间:2013-09-04 00:15:11

标签: api documentation servicestack swagger

在wordnik的petstore example中,他们提供了响应类的文档。可以在/ pet / {petId}端点上看到一个示例:

Pet {
    name (string, optional),
    id (integer, optional): foo,
    category (Category, optional),
    photoUrls (array[string], optional),
    tags (array[Tag], optional),
    status (string, optional) = ['available' or 'pending' or 'sold']: pet status in the store
}

看起来它支持以下参数:

  • optional(指定属性是否始终位于响应中的标志)
  • 允许值
  • 描述

有没有办法通过ServiceStack实现实现这一目标?

1 个答案:

答案 0 :(得分:3)

这是ServiceStack Swagger实现当前支持的版本,从版本3.9.59开始:

  • 可选:只有可以为空的值类型被描述为可选。除此之外,目前不支持明确定义请求/响应正文中的哪些属性是可选的。对于路径查询字符串参数,您可以使用ApiMemberAttribute
  • 控制选项
  • 允许值:枚举类型将自动获取允许值列表。对于其他类型(例如,具有预定义值集的string属性),使用ApiAllowableValues属性
  • 注释该属性
  • 说明:使用System.ComponentModel.Description属性

确保您的请求DTO实现IReturn<ResponseDtoType>接口。

考虑到当前的ServiceStack Swagger实现,以下可能是我能想到的最接近的Petstore示例:

public class Pet
{
    public string Name { get; set; }
    [Description("foo")]
    public int? Id { get; set; }
    public Category Category { get; set; }
    public List<string> PhotoUrls { get; set; }
    public List<Tag> Tags { get; set; }

    // If "Status" is implemented internally as a string
    [Description("pet status in the store")]
    [ApiAllowableValues("Status", "available", "pending", "sold")]
    public string Status1 { get; set; }

    // If you can implement "Status" as an enum, the allowable values
    // are instead automatically documented:
    [Description("pet status in the store")]
    public Statuses Status2 { get; set; }

    public enum Statuses { available, pending, sold }
}

该DTO中唯一标记为可选的属性是Id