Servicestack 对象参数未通过 Swagger-UI 传递给服务
Servicestack object parameter not getting passed to service with Swagger-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; }
}
服务接口没有任何关系(我在return null上设置了一个断点):
public class CreditCardTokenService : Service
{
public CreditCardTokenResponse Post(CreditCardToken request)
{
return null;
}
}
在撰写此问题时使用最新版本的 servicestack(不是 .Net Core)for .Net 4.6.2。
当我填充 Swagger-UI 中的字段时,CreditCard 对象没有通过,它只是空的。不确定我遗漏了什么,CustomerId 和 CanLookup 确实通过了。我尝试在 CreditCard class.
上设置 DataContract / DataMember
您的请求 DTO 与声明的 Swagger 模式不匹配,CreditCard
不是 body 它只是一个具有复杂类型值的参数。整个 CreditCardToken
请求 DTO 预计将被 POST 编辑为 HTTP POST 请求的 JSON Body 而此定义仅发布 CreditCard
JSON body。其他参数通过,因为它们是在请求的路径信息上发送的,即它们没有在 body.
中发送
我的服务模式:
[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; }
}
服务接口没有任何关系(我在return null上设置了一个断点):
public class CreditCardTokenService : Service
{
public CreditCardTokenResponse Post(CreditCardToken request)
{
return null;
}
}
在撰写此问题时使用最新版本的 servicestack(不是 .Net Core)for .Net 4.6.2。
当我填充 Swagger-UI 中的字段时,CreditCard 对象没有通过,它只是空的。不确定我遗漏了什么,CustomerId 和 CanLookup 确实通过了。我尝试在 CreditCard class.
上设置 DataContract / DataMember您的请求 DTO 与声明的 Swagger 模式不匹配,CreditCard
不是 body 它只是一个具有复杂类型值的参数。整个 CreditCardToken
请求 DTO 预计将被 POST 编辑为 HTTP POST 请求的 JSON Body 而此定义仅发布 CreditCard
JSON body。其他参数通过,因为它们是在请求的路径信息上发送的,即它们没有在 body.