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

ServiceStack Client multiple GET arguments (not comma separated)

我正在为一个 RESTful API 写一个客户端包装器,一个参数可以有多个值。

以这个端点为例

/rest/bug?product=Foo&product=Bar

我的class是

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?

您应该只使用 ServiceStack's Typed ClientsServiceStack Services 通信,而不是外部第 3 方 REST API,因为它们主要用于生成 HTTP ServiceStack 服务本机理解的请求。

如果您想使用第 3 方服务,建议改用 more flexible and customizable HTTP Utils API's

话虽如此,您可以自定义生成的 Url 以生成您想要 using an IUrlFilter 的 url,例如:

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