请求DTO中的ServiceStack Swagger可选字段

时间:2014-02-28 04:08:45

标签: servicestack swagger

我刚刚开始使用Swagger并且到目前为止它真的令人印象深刻。我正在尝试让一些初始端点为客户端工作,我正在挂起[ApiMember]属性。

因此,请将此视为我的请求dto(不仅仅是一个示例):

[Route("/person", "POST")
public class Person
{
    public ing Age { get; set; }
    public string Name { get; set; }
}

这将在Swagger中显示为身体的参数类型。

但我想传达可选属性...例如,Name属性是可选的。所以我的假设是这样的:

[ApiMember(IsRequired = true)]
public string Name { get; set; }

但这样做会将参数创建为路径参数。示例swagger api文档显示此功能 - 对象中的字段是可选的。有没有办法用ServiceStack和Swagger做到这一点?

编辑:我已经知道使用值类型我可以将它们设置为可空,这会将它们设置为可选。我也知道你不需要将引用类型设置为可空 - 但我需要在文档中以某种方式反映出来。

1 个答案:

答案 0 :(得分:1)

ServiceStack Swagger当前集成always marks reference type properties in the request as required(尽管可能会更改)。您可以使用ModelFilter回调(在将其注册为插件时指定为SwaggerFeature的属性)来修改发送的每个Required对象的ModelProperty属性你的回调。如果您需要其他描述性文字来标记必填/可选字段,您还可以使用此技术修改每个ModelProperty的Description

请注意,如果要使用ApiMember属性注释请求正文参数,则必须在属性中指定ParameterType = "body"Name = "(name of property)"。但是目前对于请求体参数的这个属性并没有太大的作用;它对“查询”或“路径”ParameterTypes最有用。