欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-10 10:46:07
简介官方介绍,flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,url增强和http客户端组件。url构建现在有一个登录的接口,地址如下:我们在处理这个地址的时候,会拼接 login,然...

简介

官方介绍,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 "http://site.com/image.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请求的资料请关注其它相关文章!