FsHttp 14.5.1
dotnet add package FsHttp --version 14.5.1
NuGet\Install-Package FsHttp -Version 14.5.1
<PackageReference Include="FsHttp" Version="14.5.1" />
paket add FsHttp --version 14.5.1
#r "nuget: FsHttp, 14.5.1"
// Install FsHttp as a Cake Addin #addin nuget:?package=FsHttp&version=14.5.1 // Install FsHttp as a Cake Tool #tool nuget:?package=FsHttp&version=14.5.1
FsHttp
<img align="right" width="200" alt='logo' src='https://raw.githubusercontent.com/fsprojects/FsHttp/master/docs/img/logo_big.png' />
FsHttp ("全栈 HTTP") 是一个 "可修改的 HTTP 客户端",它提供易读的基本样式,同时仍允许完全访问底层 HTTP 表示,以覆盖非标准情况。它是两者的最佳结合:便利性和灵活性。
- 将其用作
.http
文件、VSCode 的 REST 客户端、Postman 和其他工具的替代品,作为 HTTP 请求的 互动和可编程沙盒。 - 可作为用于由 .NET (C#、VB、F#) 驱动的应用程序的 成熟的生产级 HTTP 客户端。
👍 Postman?💖 FsHttp! https://youtu.be/F508wQu7ET0
由 @SchlenkR 和 @dawedawe 开发和维护。欢迎给我们留言。
文档
F# 语法示例
#r "nuget: FsHttp"
open FsHttp
http {
POST "https://reqres.in/api/users"
CacheControl "no-cache"
body
jsonSerialize
{|
name = "morpheus"
job = "leader"
|}
}
|> Request.send
C# 语法示例
#r "nuget: FsHttp"
using FsHttp;
await Http
.Post("https://reqres.in/api/users")
.CacheControl("no-cache")
.Body()
.JsonSerialize(new
{
name = "morpheus",
job = "leader"
}
)
.SendAsync();
发布说明 / 迁移到新版本
- 请参阅https://nuget.net.cn/packages/FsHttp#release-body-tab
- 对于不同的升级路径,请阅读迁移文档部分。
构建
.Net SDK
您需要安装最新版本的.NET SDK,具体在./global.json
中指定。
构建任务
有一个F#构建脚本(./build.fsx
),可以通过命令行执行多个构建任务。
对于常见任务,仓库根目录中有powershell文件
./test.ps1
:运行所有测试(源在./src/Tests
)。- 您可以向此任务传递参数。例如,只执行某些测试:
./test.ps1 --filter Name~'Response Decompression'
- 您可以向此任务传递参数。例如,只执行某些测试:
./docu.ps1
:重建FsHttp文档站(源在./src/docs
)。./docu-watch.ps1
:如果您在修改文档源并且希望可在浏览器中查看结果,请运行此脚本。./publish.ps1
:将所有包(FsHttp及其针对Newtonsoft和FSharp.Data的集成包)发布到NuGet。- 请始终查看
./src/Directory.Build.props
并保持此文件更新。
- 请始终查看
致谢
- 部分代码来自FSharp.Data的HTTP工具。
- 感谢所有批评家、支持者、贡献者、推广者、用户和朋友们。
产品 | 版本 兼容的以及额外的目标框架版本。 |
---|---|
.NET | net6.0兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
-
net6.0
- FSharp.Core (>= 5.0.2)
NuGet包 (13)
显示依赖FsHttp的Top 5个NuGet包
包 | 下载 |
---|---|
Functional.SplinterBots.API
包描述 |
|
FsHttp.FSharpData
FSharp.Data (JSON)集成包,用于FsHttp |
|
FsHttp.NewtonsoftJson
JSON.Net (Newtonsoft.Json)集成包,用于FsHttp |
|
Swate.Api
用于简化访问Swate API的Dotnet库。 |
|
Perla.PackageManager
Perla家族下的一个库。此包为您提供一个小的API集合,用于与JSPM生成器和Skypack API交互。此外,该库还推动了Perla Dev Server的包管理和importmap特性。 |
GitHub仓库
此包没有被任何流行的GitHub仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
14.5.1 | 270 | 8/9/2024 |
14.5.0 | 105,967 | 3/5/2024 |
14.4.2 | 271 | 3/5/2024 |
14.4.1 | 71,799 | 2/5/2024 |
14.4.0 | 78,979 | 1/7/2024 |
14.2.0 | 789 | 1/5/2024 |
14.1.0 | 744 | 1/3/2024 |
14.0.0 | 583 | 1/2/2024 |
13.3.0 | 12,977 | 12/28/2023 |
13.2.0 | 575 | 12/28/2023 |
12.2.0-preview01 | 575 | 12/24/2023 |
12.1.0 | 2,359 | 11/27/2023 |
12.0.0 | 51,556 | 10/31/2023 |
11.0.0 | 44,439 | 8/5/2023 |
11.0.0-preview01 | 1,233 | 3/25/2023 |
10.0.0 | 185,797 | 11/25/2022 |
10.0.0-preview3 | 867 | 11/23/2022 |
10.0.0-preview2 | 1,077 | 11/12/2022 |
10.0.0-preview1 | 884 | 11/12/2022 |
9.1.2 | 30,340 | 6/5/2022 |
9.1.1 | 3,518 | 4/24/2022 |
9.1.0 | 1,683 | 4/19/2022 |
9.0.6 | 1,687 | 4/19/2022 |
9.0.5 | 1,728 | 4/14/2022 |
9.0.4 | 1,501 | 4/8/2022 |
9.0.3 | 1,391 | 4/8/2022 |
9.0.2 | 3,457 | 4/6/2022 |
9.0.1 | 1,304 | 4/5/2022 |
9.0.0 | 13,825 | 4/5/2022 |
8.0.1 | 8,087 | 3/6/2022 |
8.0.0 | 1,165 | 3/2/2022 |
7.0.0 | 39,609 | 12/13/2021 |
6.0.1 | 2,317 | 11/23/2021 |
6.0.0 | 993 | 11/22/2021 |
0.9.0 | 1,896 | 7/14/2019 |
14.5.1
- 修复未跟踪的bug:使用config_useBaseUrl作为http模板时打印未完成的请求不会崩溃
14.5.0
- 添加'useBaseUrl'和'transformUrl'到Config,以便更好地组合
- 修复了一些扩展方法
14.4.2
- 感谢 @bartelink
所有库项目中固定了 FSharp.Core 到 5.0.2
移除了 net7.0, net8.0 TFM 特定的构建
许多其他针对稳定性和细粒度的工作
14.4.1
修复了 FSharp.Core 缺少显式依赖问题
14.4.0
修复了预先配置的请求
14.3.0
添加了 `GetList` JsonElement 扩展
14.2.0
(破坏性更改)分离了 Config 和 PrintHint(以及这些领域中的许多其他事项)
14.1.0
(破坏性更改)将 `Extensions.To...Enumerable` 重命名为 `Extensions.To...Seq`
添加了 `toJsonList...` 重载
14.0.0
(破坏性更改)在 Domain 中重命名了类型
BodyContent -> SinglepartContent
RequestContent -> BodyContent
FsHttpUrl -> FsHttpTarget
(破坏性更改)FsHttpUrl(现在为 FsHttpTarget)和 Header 重新结构化:方法、地址和 queryParams 现在是 FsHttpTarget 类的一部分。
在 Config 中添加了 `headerTransformers` 以提高可组合性
13.3.0
(破坏性更改)F# 中所有 `Response._TAsync` 函数(基于任务的)都需要一个 CancellationToken。
(破坏性更改)扩展方法重构
(破坏性更改)没有了 StartingContext,这意味着
我们为了在不指定 URL 的情况下预先配置 HTTP 请求而稍微牺牲了一点安全性。
这是我们愿意做出的权衡。
12.2.0
添加了 HttpMethods 以提高可组合性
12.1.0
net8.0
12.0.0
#137 / #102: 将 FsHttpUrl.additionalQueryParams 的类型从 obj 更改为 string
移除了(自动打开的)Async.await 和 Task.map/await
将(自动打开的)Async.map 移到了 FsHttp.Helper.Async.map
11.1.0
#130 / #105: 添加用户提供的取消标记的方法
11.0.0
#121(破坏性更改):关闭 FSI 中的调试日志(签名/命名空间中的破坏性更改)
#124:支持重复的查询参数(感谢 @DaveJohnson8080)
#106(破坏性更改):允许其他“部分”具有文件名元数据(感谢 @dawedawe)
破坏性更改:ContentTypeForPart 自定义操作应在部分定义之后
#104(破坏性更改):默认自动解压缩 GZip 响应
其他破坏性更改
移除了 `ContentTypeWithEncoding` 并在 `ContentType` 重载中使用了可选的 `charset` 参数。
将 Dsl、DslCE 和 CSharp 中的 `byteArray` 重命名为 `binary`。
警告(!!):在 Dsl 和 DslCE 中将 `stringPart` 重命名为 `textPart`,并更改了 `name` 和 `value` 参数的顺序。
重构了 Domain 中的类型
`Helper` 是一个模块而不是命名空间,并且一些内容被移动了。
配置中所有的转换器现在都是转换器列表而不是单一项。
移除了 `setHttpClient`。请使用 `setHttpClientFactory`。
`setHttpClientFactory` 接受一个 `Config` 作为输入参数。
-----------------------------
旧版本说明如下 --
-----------------------------
7.0.0
- #92:`expect` 和 `assert` 通过原始响应进行传递,而不是通过单元测试。
8.0.0
- #93(感谢 @drhumlen):将内容类型 'text/json' 改为 'application/json'。
- Http 模块在 Dsl 和 DslCE 中始终自动打开。
- 无需额外模块,适用于构建器方法。
8.0.1
- #89:不再使用 net5 和 FSI 进行阻止请求。
9.0.0 / 9.0.1
- 重新定义构建器(请参阅 README.md)。
- 许多破坏性更改(请参阅文档中的“迁移”部分)。
9.0.2
- 添加了 JSON toArray 函数。
- 修复了 #99:Response.saveFile如果没有目录应该创建目录。
9.0.3
- 再次支持 netstandard2.1。
9.0.4
- 引用了最低版本的 FSharp.Core 和其他引用包版本。
9.0.5
- 支持 netstandard2.0。
- 新增 'FsHttp.NewtonsoftJson' 集成软件包。
- 更多 JSON 函数和默认配置。
9.0.6
- #100 - 删除了 FSI 打印消息。
9.1.0
- 修复了 'Response.deserialize...' 函数的命名不一致。
- 更多 C# JSON 函数。
9.1.1
- 修复:将 GlobalConfig.Json.defaultJsonSerializerOptions 用于 jsonSerialize 的默认值。
9.1.2
- 修复了 #103:FSI 响应打印和初始化现在不再开箱即用。
10.0.0
- 支持 .Net 7(感谢 @Samuel-Dufour)。
- 破坏性更改:修正了拼写错误 "guessMineTypeFromPath" -> "guessMimeTypeFromPath"。
- 破坏性更改:模块 'Helper', 'HelperInternal' 和 'HelperAutos' 已重构。
- #115:下载流时移除打印消息。
- 打印:通过 Request.print 和 Response.print 分别为响应和请求提供单独的打印函数。
- 打印:在 FSI 中默认请求(IToRequest)打印。
- 所有项目已移除 net5.0 目标。
- PrintHint.printDebugMessages:已移至 FsHttp.Helper.Fsi.logDebugMessages 作为全局开关。
- #113 - Config.timeoutInSeconds 错误。
10.1.0
- #117:转义查询参数值字符串(感谢 @maciej-izak)
(!!) 这可以被视为破坏性更改。
- #112:允许添加(多个)头部(感谢 @Samuel-Dufour)。