文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何在 .NET 中使用 Flurl 高效处理Http请求

2024-04-02 19:55

关注

简介

官方介绍,Flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,URL增强和Http客户端组件。

Url构建

现在有一个登录的接口,地址如下:


https://www.some-api.com/login?name=Lee&pwd=123456

我们在处理这个地址的时候,会拼接 login,然后拼接?号,然后拼接参数,中间还要拼接& 得到最终的地址。

使用 Flurl 构建,首先需要通过 Nuget 安装 Flurl 组件。


 var url = "http://www.some-api.com"
           .AppendPathSegment("login")
           .SetQueryParams(new
           {
               name = "Lee",
               pwd = "123456" 
           });  

这很简单,这是最简单的Get请求,同样的我们也可以使用 Uri 的扩展方法


var url = new Uri("http://www.some-api.com").AppendPathSegment(...

Http 增强

Flurl 是模块化的,所以还需要安装 Flurl.Http


using Flurl;
using Flurl.Http;

var result = await "http://www.some-api.com".AppendPathSegment("login").GetAsync();

上面的代码会发送一个GET请求,并返回一个IFlurlResponse,可以得到 StatusCode,Headers等,也可以通过 GetStringAsync 和 GetJsonAsync 得到响应内容。

如果只是想获取响应内容,我们看看 Flurl 有多简单:


T poco = await "http://api.foo.com".GetJsonAsync<T>();
string text = await "http://site.com/readme.txt".GetStringAsync();
byte[] bytes = await "/file/upload/202211/12/vcmdhoc4psc.jpg".GetBytesAsync();
Stream stream = await "http://site.com/music.mp3".GetStreamAsync();

Post提交


await "http://api.foo.com".PostJsonAsync(new { a = 1, b = 2 });

动态类型 dynamic


dynamic d = await "http://api.foo.com".GetJsonAsync();

设置请求标头:


await url.WithHeader("Accept", "text/plain").GetJsonAsync();

await url.WithHeaders(new { Accept = "text/plain", User_Agent = "Flurl" }).GetJsonAsync();

基础身份验证


await url.WithBasicAuth("username", "password").GetJsonAsync();

OAuth 2.0


await url.WithOAuthBearerToken("mytoken").GetJsonAsync();

表单提交


await "http://site.com/login".PostUrlEncodedAsync(new { 
    user = "user", 
    pass = "pass"
});

HttpClient 管理

我们通常不会创建太多的 HttpClient, 过多的连接会耗尽服务器资源,通常会抛出 SocketException 异常,大部分还是使用 HttpClientFactory。

在 Flurl 库中,它是内部管理 HttpClient实例, 通常一个主机Host,会创建一个HttpClient,然后缓存来复用。

Flurl 也很好的支持了IOC容器,你也可以在依赖注入中使用它。

总结

Flurl 组件让Http操作变得更简单易用,你可以在项目中尝试使用它,其他的还有一些功能,可测试可配置等,你都可以在官网找到它的文档

以上就是如何在 .NET 中使用 Flurl 高效处理Http请求的详细内容,更多关于.NET 中使用 Flurl 处理Http请求的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯