UriTemplates 用于处理格式化Uri模板
PM> Install-Package Tavis.UriTemplates
设置Uri Path Segment
[Fact]
public void UpdatePathParameter()
{
var url = new UriTemplate("http://example.org/{tenant}/customers")
.AddParameter("tenant", "acmé")
.Resolve(); Assert.Equal("http://example.org/acm%C3%A9/customers", url);
}
设置Querystring
[Fact]
public void ShouldResolveUriTemplateWithNonStringParameter()
{
var url = new UriTemplate("http://example.org/location{?lat,lng}")
.AddParameters(new { lat = 31.464, lng = 74.386 })
.Resolve(); Assert.Equal("http://example.org/location?lat=31.464&lng=74.386", url);
}
如果参数没有被设置url会删除这个参数
[Fact]
public void SomeParametersFromAnObject()
{
var url = new UriTemplate("http://example.org{/environment}{/version}/customers{?active,country}")
.AddParameters(new
{
version = "v2",
active = "true"
})
.Resolve(); Assert.Equal("http://example.org/v2/customers?active=true", url);
}
可以传递一个List作为参数
[Fact]
public void ApplyParametersObjectWithAListofInts()
{
var url = new UriTemplate("http://example.org/customers{?ids,order}")
.AddParameters(new
{
order = "up",
ids = new[] {21, 75, 21}
})
.Resolve(); Assert.Equal("http://example.org/customers?ids=21,75,21&order=up", url);
}
添加一个字典作为参数
[Fact]
public void ApplyDictionaryToQueryParameters()
{
var url = new UriTemplate("http://example.org/foo{?coords*}")
.AddParameter("coords", new Dictionary<string, string>
{
{"x", "1"},
{"y", "2"},
})
.Resolve(); Assert.Equal("http://example.org/foo?x=1&y=2", url);
}