RestInPeace 13.0.0
dotnet add package RestInPeace --version 13.0.0
NuGet\Install-Package RestInPeace -Version 13.0.0
<PackageReference Include="RestInPeace" Version="13.0.0" />
paket add RestInPeace --version 13.0.0
#r "nuget: RestInPeace, 13.0.0"
// Install RestInPeace as a Cake Addin #addin nuget:?package=RestInPeace&version=13.0.0 // Install RestInPeace as a Cake Tool #tool nuget:?package=RestInPeace&version=13.0.0
<p align="center"> <img src='https://raw.githubusercontent.com/schlenkr/RestInPeace/master/docs/img/logo.png' alt='logo' width='300' /> </p>
RestInPeace 是一个面向 C# 和 F# 的 .Net HTTP 客户端库。它旨在提供一种方便且可读的方式来描述和执行 HTTP 请求,这些请求可用于生产环境和交互式环境。
RestInPeace 背后的设计原则是
以最方便、最可读的方式来指定常见的 HTTP 请求,同时仍然可以访问底层的 .Net Http 表示形式以处理不常见的情况。
RestInPeace 由 @SchlenkR 和 @dawedawe 开发和维护。欢迎给我们留言。
简单示例
F# 中的示例
#r "nuget: RestInPeace"
open RestInPeace
http {
POST "https://reqres.in/api/users"
CacheControl "no-cache"
body
jsonSerialize
{|
name = "morpheus"
job = "leader"
|}
}
|> Request.send
C# 中的示例
#r "nuget: RestInPeace"
using RestInPeace.CSharp;
await "https://reqres.in/api/users".Post()
.CacheControl("no-cache")
.Body()
.JsonSerialize(new
{
name = "morpheus",
job = "leader"
}
)
.SendAsync();
文档
- 📖 请参阅 RestInPeace 文档 网站以获取详细文档。
- 🧪 此外,请查看 集成测试,这些测试显示了库的各种细节。
版本说明 / 迁移到新版本
- 请参阅https://nuget.net.cn/packages/RestInPeace#release-body-tab
- 关于不同的升级路径,请在文档中的迁移动.wrupal部分阅读。
GitHub
请查看GitHub上的RestInPeace。
构建
.NET SDK
您需要安装最新的.NET SDK,该SDK在./global.json
中指定。
构建任务
有一个F#构建脚本(./build.fsx
),可以从命令行执行多个构建任务。
对于常见任务,在仓根目录中存在一些powershell脚本
./test.ps1
:运行所有测试(源文件在./src/Tests
)。- 您可以向此任务传递参数。例如,只执行一些测试:
./test.ps1 --filter Name~'Response Decompression'
- 您可以向此任务传递参数。例如,只执行一些测试:
./docu.ps1
:重新构建RestInPeace文档站点(源文件在./src/docs
)。./docu-watch.ps1
:如果您正在处理文档源,并希望在前端显示器中看到结果,请运行此命令。./publish.ps1
:将所有软件包(RestInPeace及其针对Newtonsoft和FSharp.Data的集成包)发布到NuGet。- 请始终查看
./src/Directory.Build.props
并确保该文件是最新的。
- 请始终查看
致谢
- 部分代码来自FSharp.Data的HTTP实用工具。
- 向所有批评者、支持者、贡献者、推广者、用户和朋友致谢。
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 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 已计算。 |
.NET Core | netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET Standard | netstandard2.0 兼容。 netstandard2.1 兼容。 |
.NET Framework | net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen40 已计算。 tizen60 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NETStandard 2.0
- System.Text.Json (>= 8.0.0)
-
.NETStandard 2.1
- System.Text.Json (>= 8.0.0)
-
net6.0
- 无依赖项。
-
net7.0
- 无依赖项。
-
net8.0
- 无依赖项。
NuGet 包 (2)
显示依赖于 RestInPeace 的前 2 个 NuGet 包
包 | 下载 |
---|---|
RestInPeace.FSharpData
RestInPeace 的 FSharp.Data (JSON) 集成包 |
|
RestInPeace.NewtonsoftJson
RestInPeace 的 JSON.Net (Newtonsoft.Json) 集成包 |
GitHub 仓库
该包没有被任何流行的 GitHub 仓库使用。
v13.0.0
- StartingContext 已不再存在,这意味着
为了在未指定 URL 的情况下预配置 HTTP 请求,我们放弃了一部分安全性。这是我们愿意做出的权衡。
这是一个我们愿意做出的权衡。
v12.2.0
- 添加 HttpMethods 以提高可组合性
v12.1.0
- 支持了 net8.0
v12.0.0
- #137 / #102: 将 RestInPeaceUrl.additionalQueryParams 的类型从 obj 改为 string
- 删除了 (自动开启) Async.await 和 Task.map/await
- 将 (自动开启) Async.map 移至 RestInPeace.Helper.Async.map
v11.1.0
- #130 / #105: 添加了用于用户提供的取消令牌的方法
v11.0.0
- #121(破坏性变更):关闭 FSI 中的调试日志(签名/命名空间中的破坏性变更)
- #124:支持重复查询参数(感谢 @DaveJohnson8080)
- #106(破坏性变更):允许与其他“部分”一起使用文件名元数据(感谢 @dawedawe)
- 破坏性变更:ContentTypeForPart 自定义操作应在部分定义之后进行
- #104(破坏性变更):默认情况下自动解压缩 GZip 响应
- 其他破坏性变更
- 移除 `ContentTypeWithEncoding` 并在 `ContentType` 重载中使用可选的 `charset` 参数。
- 在 Dsl、DslCE 和 CSharp中将 `byteArray` 重命名为 `binary`。
- 注意(!!):将 `stringPart` 重命名为 `textPart`,并在 Dsl 和 DslCE 中更改了 `name` 和 `value` 的参数顺序。
- 重新结构化域中的类型
- `Helper` 是一个模块而不是命名空间,一些内容已移动。
- 配置中的所有转换器都是转换器列表而不是单个项。
- 移除了 `setHttpClient`。请使用 `setHttpClientFactory` 代替。
- `setHttpClientFactory` 接收一个 `Config` 作为输入参数。
-----------------------------
-- 以下为旧版发行说明 --
-----------------------------
v7.0.0
- #92:`expect` 和 `assert` 通过原始响应而不是单元进行传递。
v8.0.0
- #93(感谢 @drhumlen):将内容类型 'text/json' 改为 'application/json'。
- Dsl 和 DslCE 中的 Http 模块总是 AutoOpen。
- 不为构建方法提供额外的模块。
v8.0.1
- #89:不再使用 net5 和 FSI 进行阻塞请求。
v9.0.0 / v9.0.1
- 重新定义了构建器(请参阅 README.md)。
- 许多破坏性变更(请参阅文档中的“迁移”部分)。
v9.0.2
- 添加了 JSON toArray 函数
- 修复 #99:当 Response.saveFile 不存在时,应该创建目录。
v9.0.3
- 再次支持 netstandard2.1。
v9.0.4
- 引用最低版本的 FSharp.Core 和其他引用包版本。
v9.0.5
- 支持 netstandard2.0。
- 新的 'RestInPeace.NewtonsoftJson' 集成包。
- 更多 JSON 函数和默认配置。
v9.0.6
- #100 - 移除了 FSI 打印消息。
v9.1.0
- 修复了 'Response.deserialize...' 函数的命名不一致问题。
- 更多 C# JSON 函数。
v9.1.1
- 修复:将 GlobalConfig.Json.defaultJsonSerializerOptions 作为默认值用于 jsonSerialize。
v9.1.2
- 修复 #103:FSI 响应打印和初始化不再直接起作用。
v10.0.0
- 支持 .Net 7(感谢 @Samuel-Dufour)
- 破坏性变更:修正了“guessMineTypeFromPath” -> “guessMimeTypeFromPath”的错别字。
- 破坏性变更:重构了模块 'Helper'、'HelperInternal' 和 'HelperAutos'。
- #115:下载流时移除打印消息。
- 打印:通过 Request.print 和 Response.print 分别提供响应和请求的打印函数
- 打印:在 FSI 中默认打印 IToRequest
- 从所有项目中移除了 net5.0 目标
- 将 PrintHint.printDebugMessages 移至 RestInPeace.Helper.Fsi.logDebugMessages 作为全局开关
#113 - Config.timeoutInSeconds 错误
v10.1.0
#117: 对查询参数值进行转义处理(由 @maciej-izak 完成 - 感谢)
(!!) 这可能被视为破坏性变更。
#112: 允许添加(多个)头信息(由 @Samuel-Dufour 完成 - 感谢)