龙空技术网

适用于 .NET 的 现代化 HTTP 请求客户端 FluentHttpClient

opendotnet 1041

前言:

当前朋友们对“nethttps配置”可能比较珍视,看官们都需要剖析一些“nethttps配置”的相关知识。那么小编在网络上网罗了一些有关“nethttps配置””的相关资讯,希望你们能喜欢,我们快快来学习一下吧!

FluentHttpClient

FluentHttpClient 是用于 REST API 的现代异步 HTTP 客户端, 多平台支持 Linux、Mac 和 Windows。多框架支持,.NET, .NET Core, .NET Framework, .NET Standard 等。

使用 fluent api,一行代码发送 http 请求,并绑定请求体,请求头,以及解析响应内容,反序列化,可选的重试等等。

下面是一个示例:

Blog result = await new FluentClient("")

.GetAsync("blogs")

.WithArgument("id", 15)

.WithBearerAuthentication(token)

.As<Blog>();

开始使用

从 Nuget 中安装 Pathoschild.Http.FluentClient。

基本用法

这是一个简单的 Get 请求,并把响应内容反序列化为 Item 类。

Item item = await new FluentClient()

.GetAsync("")

.As<Item>();

还可以定义公共的客户端(这可以使用内置连接池提高性能),然后在构造函数中设置 URL:

using var client = new FluentClient("");

Item item = await client

.GetAsync("items/14")

.As<Item>();

客户端库提供了开箱即用的DELETE、GET、POST、PUT和方法。

URL 参数

可以使用匿名对象向请求 URL 添加任意数量的参数:

await client

.PostAsync("items/14")

.WithArguments(new { page = 1, search = "some search text" });

或者用字典:

await client

.PostAsync("items/14")

.WithArguments(new Dictionary<string, object> { … });

或者单独设置每个参数:

await client

.PostAsync("items/14")

.WithArgument("page", 1)

.WithArgument("search", "some search text");

设置请求体

可以直接在 POST 或 PUT 中添加请求体。

await client.PostAsync("search", new SearchOptions(…));

或者使用下面的方式:

await client

.GetAsync("search")

.WithBody(new SearchOptions(…));

设置请求头

await client

.PostAsync("items/14")

.WithHeader("User-Agent", "Some Bot/1.0.0")

.WithHeader("Content-Type", "application/json");

并支持使用 WithAuthentication WithBasicAuthentication WithBearerAuthentication 更方便的添加认证信息。

简单的重试策略

默认情况下,客户端库不会重试失败的请求,如果需要重试的话,也容易配置:

client

.SetRequestCoordinator(

maxRetries: 3,

shouldRetry: request => request.StatusCode != HttpStatusCode.OK,

getDelay: (attempt, response) => TimeSpan.FromSeconds(attempt * 5)

);

FluentHttpClient 使用了 Fluent API, 可以很方便的处理 Http 请求,其他的功能还支持,自定义重试,单元测试等等,感兴趣的同学可以关注下。











项目地址

分享点收藏

标签: #nethttps配置 #nethttpspost请求