Add extension methods to add URL fragments
UriBuilder.Fluent
This places extension methods over System.UriBuilder to help deal with query string parameters, and create more of a fluent interface. Unlike other projects, this NetStandardLibrary compliant package builds ontop of trusty UriBuilder, does not use custom Uri generators, or have outside dependencies. Unit tests continue to be a first class citizen!
Getting started
Just install the nuget package install-package UriBuilder.Fluent and thats it. The extension methods should be available to you!
Code Example
This lets you do things like
new UriBuilder()
.WithParameter("awesome", "yodawg")
.WithParameter("fun", ["cool", "yay"])
.WithHost("awesome.com")
.WithPathSegment("seg")
.UseHttps()
.Uri
.ToString()
result: https://awesome.com/seg?awesome=yodawg&fun=cool,yay
or
new UriBuilder("https://awesome.com/yo)
.WithParameter("id", "5")
.Uri
.ToString();
result: https://awesome.com/yo?id=5
you can even pass a dictionary of parameters
var dictionary = new Dictionary<string, string>()
{
["yo"] = "dawg"
};
new UriBuilder("http://awesome.com")
.WithParameter(dictionary);
result: http://awesome.com/?yo=dawg
ToEscapeString() vs. ToEscapeDataString()
There are two extension methods for performing Uri encoding.
ToEscapeString()
Performs encoding only on the Uri query string and returns the Uri as a string.
var uri = new UriBuilder("https://awesome.com")
.WithParameter("yo", "dawg<")
.ToEscapeString();
result: http://awesome.com/?yo=dawg%3C
ToEscapeDataString()
Performs encoding on the whole Uri and returns the Uri as a string.
var uri = new UriBuilder("https://awesome.com")
.WithParameter("yo", "dawg<")
.ToEscapeDataString();
result: http%3A%2F%2Fawesome.com%2F%3Fyo%3Ddawg%3C