2016-11-18 6 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; 
    } 
} 

.Net 4.6.2用のこの質問(.Net Coreではなく)の作成時にサービスパックの最新バージョンを使用してください。

Swagger-UIのフィールドにデータを入力すると、CreditCardオブジェクトはそのnullになります。私が紛失しているもの、CustomerId、CanLookupが何をするのか分からない。私は、CreditCardクラスでDataContract/DataMemberを設定しようとしました。

enter image description here

答えて

3

リクエストDTOはCreditCardはそれだけで複合型の値を持つパラメータの体ではない、と宣言闊歩スキーマと一致していません。 CreditCardTokenリクエストDTOはHTTP POST要求のJSON本体としてPOSTされる予定ですが、この定義はCreditCard JSON本体のみを投稿します。他のパラメータはリクエストのパス情報で送信されるため、送信されます。つまり、リクエストはボディに送信されません。

関連する問題