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 Clients 与 ServiceStack 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;
}
}
我正在为一个 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 Clients 与 ServiceStack 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;
}
}