github tmenier/Flurl Flurl.3.0.0-pre5
Flurl 3.0

Flurl 3.0 contains a major rewrite of the URL building/parsing engine. It features better support for relative URLs, and brings its parsing capabilities more in line with System.Uri, while also addressing some of its quirks.

This release also adds the same set of URL-building extension methods currently on string to System.Uri (#489).

New Url properties:

  • Scheme (read/write)
  • UserInfo (read/write)
  • Host (read/write)
  • Port (read/write)
  • Authority (read-only, UserInfo + Host + Port)
  • Root (read-only, Scheme + Authority)
  • PathSegments (modifiable)
  • IsRelative (read-only)
  • IsSecureScheme (read-only, true for https or wss)

New fluent builder methods on Flurl.Url, System.Uri, and string:

  • RemovePathSegment() (removes the last segment)
  • RemovePath()
  • RemoveQuery()
  • Reset() (restores Url to its original state as constructed, NOT available on string)


  • New static utility mthod: Url.ParsePathSegments(string) (assumes entire string is the path portion of a URL)
  • Url.SetQueryParams(object) gives special treatment to collections of Tuple<T1, T2> and ValueTuple<T1, T2>, parsing their values as name-value pairs.

BREAKING changes on Url:

  • Path changed to be more in line with the formal definition. Previously it included everything (scheme, host, etc.) up to the query string. It now starts after the host/port, including the leading / if present.
  • IsValid() instance method was removed. It was confusing in the case of relative URLs since arguably any string could be considered a valid relative URL. Check the IsRelative property instead. (Static Url.IsValid(string) method is still available but, same a before, returns true only for valid absolute URLs.)

Bug fixes:

  • Url.ToUri() now works for relative URLs (#407)
latest releases: Flurl.Http.3.2.0, Flurl.Http.3.1.0, Flurl.3.0.2...
8 months ago