ServiceStack Client多个GET参数(不是以逗号分隔)

时间:2016-02-18 19:29:54

标签: web-services rest servicestack webservices-client servicestack-text

我正在通过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?

1 个答案:

答案 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;
    }
}