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 onSystem.Uri
(#489) -
New fluent builder methods on
Flurl.Url
,System.Uri
, andstring
:RemovePathSegment()
(removes the last segment)RemovePath()
RemoveQuery()
Reset()
(restoresUrl
to its original state as constructed, NOT available onstring
)
-
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 theIsRelative
property instead. (StaticUrl.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)