github tmenier/Flurl Flurl.3.0.0-pre6
Flurl 3.0

Flurl 3.0 contains a major rewrite of the URL building/parsing engine. It brings Flurl.Url's feature set more in line with System.Uri, while also addressing some of its quirks.

New Features

  • New Url properties (#440)

    • 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)
  • All URL-building extension methods currently on string now available on System.Uri (#489)

  • 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)
  • Support for relative URLs (#407)

  • Parameterless constructor for Url (#518)

  • New static utility method: Url.ParsePathSegments(string) (assumes entire string is the path portion of a URL)

Breaking Changes from 2.x

  • New collection type for Url.QueryParams (#555)
  • 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.
  • Url.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.)
  • Dropping support for older platforms (#544)

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...
7 months ago