Flurl 简介
官方介绍,Flurl是一个现代化的,流畅的,支持异步的URL增强和Http客户端组件。
1. Url 构建
假如我们有一个登录的接口,如下:
https://www.some-api.com/login?name=UserName&pwd=123456
当我们处理这个uri 地址的时候,首先会拼接 login, 然后拼接?号, 最后拼接参数,另外中间还要拼接& 得到最终的地址。
如果使用 Flurl 构建,首先需要通过 Nuget 安装 Flurl 组件,引用完成后,编写下面的代码。
var url = "http://www.some-api.com"
.AppendPathSegment("login")
.SetQueryParams(new
{
name = "UserName",
pwd = "
这非常简单,它最简单的Get请求,另外我们也可以使用 Uri 的扩展方法,如下
var url = new Uri("http://www.some-api.com").AppendPathSegment(...
2. 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"
});
3 . HttpClient 管理
程序中,通常不会创建太多的 HttpClient, 因为过多的连接会耗尽服务器资源,然后会抛出 SocketException 异常,所以大部分情况还是使用 HttpClientFactory。
在 Flurl 库中,内部管理了 HttpClient实例, 通常一个主机Host,会创建一个HttpClient,然后缓存来进行复用。
另外,Flurl 也很好的支持了IOC容器,你也可以在依赖注入中使用它。
Flurl 组件让Http操作变得更简单易用,你可以在项目中尝试使用它,其他的还有一些功能,可测试可配置等,你都可以在官网找到它的文档。
项目地址
https://flurl.dev
分享
点收藏
点点赞
点在看
今天的文章Flurl:一种优雅的方式处理 RESTful API分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30123.html