2016-11-18 27 views
0

我的服務模式:Servicestack對象參數沒有獲得通過與揚鞭-UI到服務

[Route("/customer/{CustomerId}/creditcardtoken/{CanLookup}", "POST")] 
public class CreditCardToken : IReturn<CreditCardTokenResponse> 
{ 
    [ApiMember(ParameterType = "path", DataType = "string", IsRequired = true, Verb = "POST")] 
    public string CustomerId { get; set; } 
    [ApiMember(ParameterType = "path", DataType = "boolean", IsRequired = true, Verb = "POST")] 
    public bool CanLookup { get; set; } 
    [ApiMember(ParameterType = "body", DataType = "CreditCard", IsRequired = true, Verb = "POST")] 
    public CreditCard CreditCard { get; set; } 
} 

public class CreditCard 
{ 
    public short CreditCardTypeId { get; set; } 
    public string NameOnCard { get; set; } 
    public string CardNumber { get; set; } 
    public string Expiration { get; set; } 
    public string PostalCode { get; set; } 
} 

服務接口無關,它(我設置的回空破發點):

public class CreditCardTokenService : Service 
{ 
    public CreditCardTokenResponse Post(CreditCardToken request) 
    { 
     return null; 
    } 
} 

使用最新版本的servicestack作爲撰寫此問題(不是.Net Core)的.Net 4.6.2。

當我填充Swagger-UI中的字段時,CreditCard對象不會通過,它只是null。不知道我錯過了什麼,CustomerId和CanLookup確實會通過。我嘗試在CreditCard類上設置DataContract/DataMember。

enter image description here

回答

3

您的要求DTO不符合申報揚鞭模式,CreditCard是不是身體它只是有一個複雜類型值的參數。整個CreditCardToken請求DTO預計將POST'作爲HTTP POST請求的JSON正文,而此定義僅發佈CreditCard JSON正文。其他參數正在通過,因爲它們是在請求的路徑信息上發送的,即它們不在本體中發送。