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

FluentHttpClient

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

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

下面是一个示例:

Blog result = await new FluentClient("https://example.org/api")
   .GetAsync("blogs")
   .WithArgument("id", 15)
   .WithBearerAuthentication(token)
   .As<Blog>();

开始使用

从 Nuget 中安装 Pathoschild.Http.FluentClient

基本用法

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

Item item = await new FluentClient()
   .GetAsync("https://example.org/api/items/14")
   .As<Item>();

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

using var client = new FluentClient("https://example.org/api");

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 请求,其他的功能还支持,自定义重试,单元测试等等,感兴趣的同学可以关注下。

往期推荐:

时长两年半打造的 .NET 业务开发框架开源了!

这是我见过最好用的 .NET 权限管理系统

功能全面,又一个 .NET 快速开发框架开源了!

推荐一个开源的轻量级 .NET 任务调度框架

基于 .NET 6 开发的英雄联盟插件

项目地址

https://github.com/Pathoschild/FluentHttpClient

9fee1d548450abf006fc33c7efd5cd16.png

分享

f6ad65e50c812a9d860686ea50d9b0b4.png

点收藏 

f429bdde2960877538e151bafdbcff33.png

点点赞

2ecf7a9e8441d811020429f4bd0af0f0.png

点在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值