Flurl is a modern, fluent, asynchronous, testable, portable, buzzword-laden URL builder and HTTP client library for .NET.

Code It

// Flurl will use 1 HttpClient instance per host
var person = await "https://api.com"
    .AppendPathSegment("person")
    .SetQueryParams(new { a = 1, b = 2 })
    .WithOAuthBearerToken("my_oauth_token")
    .PostJsonAsync(new
    {
        first_name = "Claire",
        last_name = "Underwood"
    })
    .ReceiveJson<Person>();

Test It

// fake & record all http calls in the test subject
using (var httpTest = new HttpTest()) {
    // arrange
    httpTest.RespondWith("OK", 200);
    // act
    await sut.CreatePersonAsync();
    // assert
    httpTest.ShouldHaveCalled("https://api.com/*")
        .WithVerb(HttpMethod.Post)
        .WithContentType("application/json");
}

Flurl is available on NuGet. It is free for commercial use and runs everywhere .NET runs.

Get It

For just the URL builder, install Flurl. For everything else, install Flurl.Http.

Learn It

You've come to the right place. Check out the docs.

Ask a Question

For programming questions related to Flurl, please ask on Stack Overflow.

Report an Issue

To report a bug or request a feature, open an issue on GitHub.

Stay Informed

To stay current on releases and other announcements, follow @FlurlHttp.

Contribute

To contribute code, please see the contribution guidelines.