2

在 wordnik 的petstore 示例中,他们为响应类提供了文档。在 /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
}

看起来它支持以下参数:

  • 可选(指定属性是否始终在响应中的标志)
  • 允许值
  • 描述

有没有办法通过 ServiceStack 实现来实现这一点?

4

1 回答 1

3

从 3.9.59 版本开始,ServiceStack Swagger 实现目前支持以下内容:

  • 可选:只有可空值类型被描述为可选。除此之外,目前不支持明确定义请求/响应正文中的哪些属性是可选的。对于路径查询字符串参数,您可以使用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.

于 2013-09-04T00:26:56.250 回答