抖音粉丝群1
『7x24小时有问必答』

前言

今天大姚给大家分享一个.NET开源(MIT License)、免费、现代化、流畅、可测试、可移植的URL构建器和HTTP客户端库:Flurl。

项目介绍

Flurl是一个集现代性、流畅性、异步性、可测试性、可移植性于一身的URL构建器与HTTP客户端库。它提供了简洁的API,使得HTTP请求的发送与URL的构建变得极为简单与直观。无论是构建复杂的URL路径,还是设置查询参数、请求头或认证信息,Flurl都能以几乎零学习成本的方式实现。

项目源代码

1.png

项目使用

安装项目NuGet包

Flurl.Http 是一个构建在 Flurl 基础之上的 HTTP 客户端库。它提供了发送 HTTP 请求(GET、POST、PUT、DELETE 等)的简洁、流畅的 API:
Install-Package  Flurl.Http

Flurl 是 Flurl.Http 的基础库,它主要关注于 URL 的构建和解析:
PM>  Install-Package  Flurl

URL 构建器

using  Flurl;

var  url  =  "https://some-api.com"

        .AppendPathSegment("endpoint")

        .SetQueryParams(new  {

                api_key  =  _config.GetValue<string>("MyApiKey"),

                max_results  =  20,

                q  =  "I'll  get  encoded!"

        })

        .SetFragment("after-hash");

//  result:

//  https://some-api.com/endpoint?api_key=xxx&max_results=20&q=I%27ll%20get%20encoded%21#after-hash

"https://some-api.com".SetQueryParam("x",  new[]  {  1,  2,  3  });  //  https://some-api.com?x=1&x=2&x=3

"https://some-api.com"

        .AppendQueryParam("x",  1);

        .AppendQueryParam("x",  2);

        .AppendQueryParams("x",  new[]  {  3,  4  });  //  https://some-api.com?x=1&x=2&x=3&x=4

模拟和记录HTTP请求

using  Flurl;

using  Flurl.Http;

var  resultData  =  await  "https://some-api.com"

        .AppendPathSegment("endpoint")  

        .GetStringAsync();

        

var  result  =  await  "http://api.foo.com".PostJsonAsync(requestObj).ReceiveJson<t>();

var  resultStr  =  await  "http://api.foo.com/1".PatchJsonAsync(requestObj).ReceiveString();

var  resultStr2  =  await  "http://api.foo.com/2".PutStringAsync("hello").ReceiveString();

var  resp  =  await  "http://api.foo.com".OptionsAsync();

await  "http://api.foo.com".HeadAsync();

文件上传相关:
var  resp  =  await  "http://api.com".PostMultipartAsync(mp  =>  mp

        .AddString("name",  "hello!")                                //  individual  string

        .AddStringParts(new  {a  =  1,  b  =  2})                  //  multiple  strings

        .AddFile("file1",  path1)                                        //  local  file  path

        .AddFile("file2",  stream,  "foo.txt")                //  file  stream

        .AddJson("json",  new  {  foo  =  "x"  })                  //  json

        .AddUrlEncoded("urlEnc",  new  {  bar  =  "y"  })  //  URL-encoded                                            

        .Add(content));                                                          //  any  HttpContent

下载文件:
//  filename  is  optional  here;  it  will  default  to  the  remote  file  name

var  path  =  await  "http://files.foo.com/image.jpg"

        .DownloadFileAsync("c:\\downloads",  filename);

处理超时错误:
try  {

        var  result  =  await  url.GetStringAsync();

}

catch  (FlurlHttpTimeoutException)  {

        //  handle  timeouts

}

catch  (FlurlHttpException)  {

        //  handle  error  responses

}

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看,别忘了给项目一个Star支持。
GitHub开源地址:https://github.com/tmenier/Flurl

优秀项目和框架精选

该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没)。
https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md

免费开源的程序员简历模板

了解作者获取更多学习资料

程序员常用的开发工具软件推荐

加入DotNetGuide技术社区交流群

NET/NETCoreORM框架资源汇总

ASPNETCore开发者学习指南路线图

---

学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。不积跬步无以至千里,不积小流无以成江河!!!

<center><center>See you next good day</center><center></center></center>

</t></string>

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码