HTTP客户端库:Flurl
|
freeflydom
2024年7月19日 17:10
本文热度 833
|
项目介绍
Flurl是一个集现代性、流畅性、异步性、可测试性、可移植性于一身的URL构建器与HTTP客户端库。它提供了简洁的API,使得HTTP请求的发送与URL的构建变得极为简单与直观。无论是构建复杂的URL路径,还是设置查询参数、请求头或认证信息,Flurl都能以几乎零学习成本的方式实现。
项目源代码
项目使用
安装项目NuGet包
Flurl.Http 是一个构建在 Flurl 基础之上的 HTTP 客户端库。它提供了发送 HTTP 请求(GET、POST、PUT、DELETE 等)的简洁、流畅的 API:
Install-Package Flurl.Http
Flurl 是 Flurl.Http 的基础库,它主要关注于 URL 的构建和解析:
Install-Package Flurl
URL 构建器
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
}
项目源码地址
GitHub开源地址:https://github.com/tmenier/Flurl
在线文档地址:https://flurl.dev
转自https://www.cnblogs.com/Can-daydayup/p/18310536 作者追逐时光者
该文章在 2024/7/19 17:22:14 编辑过