我正在通过RESTful API编写客户端包装器,它可以为参数获取多个值。
以此端点为例
/rest/bug?product=Foo&product=Bar
我的课程是
public class SearchBugRequest : IReturn<BugResponse>
{
[DataMember(Name = "product")]
public string[] Product { get; set; }
}
当我使用ToUri
时,它表明ServiceStack正在构建URI
/rest/bug?product=Foo%2CBar%2CBlah
ServiceStack最终创建了一个以逗号分隔和URL编码的URL
如何强制ServiceStack创建服务所需的URL?
答案 0 :(得分:2)
您应该只使用ServiceStack's Typed Clients与 ServiceStack服务交谈,而不是外部第三方REST API,因为它们主要用于生成ServiceStack本身理解的HTTP请求服务。
如果您想使用第三方服务,建议您使用更多flexible and customizable HTTP Utils API's。
话虽如此,您可以自定义生成的网址以生成您想要的网址using an IUrlFilter,例如:
public class SearchBugRequest : IReturn<BugResponse>, IUrlFilter
{
[IgnoreDataMember]
public string[] Product { get; set; }
public string ToUrl(string absoluteUrl)
{
Product.Each(p => absoluteUrl = absoluteUrl.AddQueryParam("product",p));
return absoluteUrl;
}
}