Flurl.Http v3.0.0 Release Notes

Release Date: 2019-09-13 // over 4 years ago
  • ๐Ÿ— 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)

Previous changes from v2.8.2

    • ๐Ÿ› Bug when decoding encoded + (#437)