Flurl--现代的、链式的、异步的、可测试的、可移植的URL构建器和.NET HTTP客户端组件库

类库组件 作者: Rector 38 次阅读 · 读完约需 3 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

Flurl—.NET的HTTP客户端组件

前言

在现代的程序开发中,无论是前端开发,还是后端开发,都离不开对接口(API)的调用。前端向后端接口发起Http请求的方式有如:

基于.NET的后端发起Http请求的有如:

当然,以上只是列举了一些常用的类库或者组件,今天这篇文章主要为大家详细分享一下Flurl这个Http客户端组件,包括:

  • 什么是Flurl
  • 如何安装Flurl
  • Flurl的基本用法

什么是Flurl

Flurl是一个现代的、链式的、异步的、可测试的、可移植的、时髦的URL构建器和用于.NET开发的HTTP客户端组件库。

.NET开发者可以通用NuGet管理工具安装Flurl,并且可以免费用于商业用途。它可以运行在各平台上,包括.NET Framework、.NET Core、Xamarin和UWP。

Flurl在GitHub上的开源托管地址为:Flurl

如何安装Flurl

如上文所述,Flurl在NuGet上可用。所以,.NET开发者可以通过NuGet包管理工具进行安装,你可以直接访问Flurl的NuGet查看安装命令,以及当前可用的版本等信息,如:

Nuget包含管理工具的安装命令为:

PM> Install-Package Flurl.Http -Version 2.4.2

dotnet命令行的安装命令为:

dotnet add package Flurl.Http --version 2.4.2

注: 如果你只需要URL的构造器功能,则只安装Flurl单个包即可,如果需要除URL构造器之外的所有Flurl的功能,则安装Flurl.Http

开始使用Flurl

正如Flurl宣传语说的,Flurl是一个现代的,链式的,可异步的,可测试的…….NET HTTP客户端组件,那么,接下来我们初步体验一下Flurl的现代,异步,链式的等特性,如下:

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>();

从Flurl实现Http请求的示例代码中,我们可以看到代码的确非常优雅,简单的几行代码就完成了异步,设置Http请求的参数,请求头,请求数据以及最后的数据返回序列化操作。

看了这样简洁的实现,反正我是忍不住要去体验一下Flurl这个基于.NET的HTTP客户端组件了。

再来看一下Flurl的可测试性,如下:

using (var httpTest = new HttpTest()) {
    httpTest.RespondWith(200, "OK");
    await sut.CreatePersonAsync();
    httpTest.ShouldHaveCalled("https://api.com/*")
        .WithVerb(HttpMethod.Post)
        .WithContentType("application/json");
}

同样是简洁的几行代码,便可以实现Http的测试功能。

本文对Flurl的分享就到这里了,更多的关于Flurl的使用,配置及扩展将在后面的文章介绍。

怎么样,Flurl是不是你需要的简洁的.NET HTTP客户端组件呢?

我是Rector,感谢你的阅读。

阅读了该文章的人还浏览了...

本文永久链接码友网 » Flurl--现代的、链式的、异步的、可测试的、可移植的URL构建器和.NET HTTP客户端组件库

发布于: 2019-05-20 15:31:40
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册