简介

先发上官网地址:https://flurl.dev/

Flurl 是一个异步的、可测试的、可移植的、URL 构建器和 .NET 的 HTTP 客户端库;Flurl 在NuGet上可用,可免费用于商业用途。它可以在各种平台上运行,包括 .NET Framework、.NET Core、Xamarin 和 UWP。

它能解决什么痛点

日常服务端调用接口,大都是通过HttpHelper实现,如果没有类库要不自己手敲要不网上找,显得我们技术很low,Flurl就完美解决这个问题。举个简单例子

T poco = "http://api.foo.com".GetJsonAsync<T>();

就是这么简单,直接返回泛型对象;

安装

通过nuget就可以安装,或者去官网下载后引用即可;

最佳实践

官网例子已经很全面了,懒得翻就看我的

Post请求

 var response = "www.baidu.com"
.WithHeader("content-type", "application/x-www-form-urlencoded") //可以继续增加Header参数
.PostUrlEncodedAsync(new { name = "i am name"}) //post 开头就是post请求,反之亦然
//x-www-form-urlencoded 需要使用 PostUrlEncodedAsync
//form-data 需要使用 PostMultipartAsync
.ReceiveJson<tt2>(); //post请求接受
response.Wait(); //异步等待结果返回

Get请求

var response2 = "www.baidu.com"

点击查看代码
var response2 = "www.baidu.com"
.SetQueryParams(new { name="i am name"}) //QueryString参数
.WithHeader("Authorization", "Bearer dsafadsfadsfasdfasdf==") //Bearer 认证
.GetJsonAsync<tt3>(); //get请求返回
response2.Wait();
                .SetQueryParams(new { name="i am name"})  //QueryString参数
.WithHeader("Authorization", "Bearer dsafadsfadsfasdfasdf==") //Bearer 认证
.GetJsonAsync<tt3>(); //get请求返回

response2.Wait();

特殊自定义请求

public class MyCustomHttpClientFactory : DefaultHttpClientFactory

{

    public override HttpMessageHandler CreateMessageHandler()
{
var client = base.CreateMessageHandler() as HttpClientHandler;
client.Credentials = CredentialCache.DefaultNetworkCredentials;
client.Proxy = new System.Net.WebProxy(); //new 一个新的代理
client.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials; //使用默认的代理
return client;
}
} var response333 = new FlurlClient()
.Configure(x =>
{
//配置特殊 HttpClient ,放置抛 407 代理错误
x.HttpClientFactory = new MyCustomHttpClientFactory();
}).Request("http://www.baidu.com", "?name=i am name")
//Request比较特殊,第一个参数必须Uri.IsValid()通过
//包含协议,域名
.WithBasicAuth("account", "password") // basic auth认证
.GetJsonAsync<tt4>();
response333.Wait();

最新文章

  1. JAVA的模式对话框和非模式对话框
  2. 如何在一个网站或者页面写js
  3. [HDU5902]GCD is Funny(xjb搞)
  4. mybatis实战教程(mybatis in action),mybatis入门到精通
  5. &#39;ModelOptions&#39; object has no attribute &#39;get_field_names
  6. DOM系列---DOM获取尺寸和位置
  7. webconfig和appconfig中出现特殊字符如何处理
  8. Round robin
  9. php 设置一个函数的最大运行时间
  10. BZOJ 3282: Tree( LCT )
  11. [js笔记整理]事件篇
  12. canvas水波纹效果
  13. 最短路洛谷P2384
  14. hdu_3068 最长回文(Manacher算法)
  15. 4sumii
  16. WPF 10天修炼 第九天 - 几何图形
  17. MAC OS 更新GIT版本时遇到的问题
  18. (java项目)坦克大战 2.0
  19. reportng之测试报告升级美化
  20. Linux:查看进程运行时间

热门文章

  1. CAS 悲观锁 乐观锁
  2. vim之YouCompleteMe插件问题:The ycmd server SHUT DOWN (restart with ...low the instructions in the documen
  3. 合肥光源纵向震荡数据源相关PV的增补
  4. 搭建Git服务器教程(整理自腾讯云开发者实验室)
  5. 题解 [SCOI2008]斜堆
  6. 代码随想录算法训练营day24 | leetcode 77. 组合
  7. DevOps 与 FinOps:二者可以协同吗?
  8. vue element-ui table 实现自动滚动效果
  9. 初始化安装后 Nacos 动态路由配置不生效
  10. pat乙级1016 部分A+B