简介

先发上官网地址: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();

Flurl 组件使用的更多相关文章

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

    简介 官方介绍,Flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,URL增强和Http客户端组件. Url构建 现在有一个登录的接口,地址如下: https://www.some-api ...

  2. 转载使用Flurl制作可复用的分页组件

    使用Flurl制作可复用的分页组件 使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然需要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,还是这 ...

  3. ASP.NET:使用Flurl制作可复用的分页组件

    使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然需要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,还是这么用.分页的逻辑本来就不复杂,更重要 ...

  4. ExtJS 4.2 评分组件

    上一文章是扩展ExtJS自带的Date组件.在这里将创建一个评分组件. 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2上的一个RatingStar ...

  5. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  6. react-router 组件式配置与对象式配置小区别

    1. react-router 对象式配置 和 组件式配置    组件式配置(Redirect) ----对应---- 对象式配置(onEnter钩子) IndexRedirect -----对应-- ...

  7. Angular2入门系列教程3-多个组件,主从关系

    上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...

  8. Angular2入门系列教程2-项目初体验-编写自己的第一个组件

    上一篇 使用Angular-cli搭建Angular2开发环境 Angular2采用组件的编写模式,或者说,Angular2必须使用组件编写,没有组件,你甚至不能将Angular2项目启动起来 紧接着 ...

  9. .NET Core 首例 Office 开源跨平台组件(NPOI Core)

    前言 最近项目中,需要使用到 Excel 导出,找了一圈发现没有适用于 .NET Core的,不依赖Office和操作系统限制的 Office 组件,于是萌生了把 NPOI 适配并移植到 .NET C ...

  10. .NetCore中的日志(1)日志组件解析

    .NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...

随机推荐

  1. Java:枚举类型

    Java:枚举类型 每博一文案 师父说:人活一世,每个人都有他的特别,每个人都值得被温柔相待.红尘一遭,每段经历都有它的必然, 每段经历都造就了现在的你,最快乐的事情,就是做自己,最浪漫的事情,就是爱 ...

  2. WinRAR的 安装与下载

    一.简介 WinRAR 是一个强大的压缩文件管理工具.它能备份你的数据,减少你的 E-mail 附件的大小,解压缩从 Internet 上下载的 RAR.ZIP 和其他格式的压缩文件,并能创建 RAR ...

  3. 2.1.新建项目及项目目录和预览uni项目

    目录结构 一个uni-app工程,默认包含如下目录及文件 static目录 使用注意 编译到任意平台时,static 目录下除不满足条件编译的文件,会直接复制到最终的打包目录,不会打包编译.非 sta ...

  4. TypeScript 学习笔记 — 类的基本用法(五)

    目录 TS 中定义类 类中实例属性.方法 + 修饰符 public protected private readonly 实例方法 类中原型属性.方法 + 访问器 原型属性 + 访问器 原型方法 类中 ...

  5. JZOJ 1075. 【GDKOI2006】新红黑树

    \(\text{Problem}\) A君和B君在玩一种叫做新红黑树的游戏,即在一棵由红枝和黑枝构成的树上轮流砍树枝,每次砍一枝,A君每次只能砍红枝,B君每次只能砍黑枝,当其中某人已经没有树枝砍的时候 ...

  6. 用ChatGPT,绘制一个账号系统的C4架构图

    hi,我是熵减,见字如面. 昨天我们用ChatGPT来设计一个账号系统,并尝试输出:模型表,类关系图,序列图,状态图等常用的架构设计中常用的元素. 今天,我们继续向更高层级延伸一下,看ChatGPT能 ...

  7. [转载]pytest报AttributeError: module ‘pytest‘ has no attribute ‘main‘

    转自:https://blog.csdn.net/yinying12/article/details/110522989 pytest报AttributeError: module 'pytest' ...

  8. navicat无法识别登录秘钥

    前因 公司数据库未开放外网访问端口,只允许内网登录,这对开发人员查看数据很不友好,所以一般情况下都会让开发人员通过navicat的ssh隧道功能来查看数据. 但在测试ssh隧道过程中,私钥1验证通过, ...

  9. 100、 FilenameUtils

    FilenameUtils import org.apache.commons.io.FilenameUtils; 测试数据 String fileDirectory = "/D:/aa/b ...

  10. vue动态绑定类名

    <view :class="[index == 0 ? 'bgpvip' : 'bgsvip' ,bg]"> 1.class前面需要加: 2.多个类名可以使用数组的方式 ...