2014-02-28 31 views
0

我剛剛將Swagger啓動並運行,至今它的確令人印象深刻。我試圖讓一些初始端點爲客戶端工作,並且我正在掛上[ApiMember]屬性。ServiceStack Swagger請求中的可選字段DTO

所以認爲這是我的要求DTO(不是真正的只是一個例子):

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

這將揚鞭顯示爲參數類型的身體。

但我想傳達可選屬性...說例如Name屬性是可選的。所以我的假設是這樣的:

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

但是,這樣做會創建參數作爲路徑參數。示例swagger api文檔顯示了此功能 - 對象中的字段是可選的。有沒有辦法與ServiceStack和Swagger做到這一點?

編輯:我已經知道,值類型我可以設置它們爲空,並將它們設置爲可選。我也知道你不需要設置引用類型爲空,但我需要以某種方式反映在文檔中。

回答

1

ServiceStack Swagger集成目前always marks reference type properties in the request as required(雖然可能會改變)。您可以使用ModelFilter回調(在將其註冊爲插件時指定爲屬性SwaggerFeature)修改發送到回調的每個ModelProperty對象的Required屬性。如果您需要額外的描述性文字來標記必填/可選字段,您還可以使用此技術修改每個ModelProperty的Description

請注意,如果要使用ApiMember屬性註釋請求正文參數,則必須在該屬性中指定ParameterType = "body"Name = "(name of property)"。但目前對請求主體參數使用此屬性的操作並不多;它對於「查詢」或「路徑」參數類型非常有用。