RestInPeace.FSharpData 13.1.0

dotnet add package RestInPeace.FSharpData --version 13.1.0                
NuGet\Install-Package RestInPeace.FSharpData -Version 13.1.0                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块的 Install-Package 版本。
<PackageReference Include="RestInPeace.FSharpData" Version="13.1.0" />                
对于支持 包引用 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add RestInPeace.FSharpData --version 13.1.0                
#r "nuget: RestInPeace.FSharpData, 13.1.0"                
#r 指令可用于 F# 交互式和 Polyglot Notebooks。将此内容复制到交互式工具或脚本源代码中以引用包。
// Install RestInPeace.FSharpData as a Cake Addin
#addin nuget:?package=RestInPeace.FSharpData&version=13.1.0

// Install RestInPeace.FSharpData as a Cake Tool
#tool nuget:?package=RestInPeace.FSharpData&version=13.1.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 开发和维护。请随时给我们留言。

NuGet Badge build status

简单示例

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 文档 网站,以获取详细的文档。
  • 🧪 此外,请查看 集成测试,这些测试展示了各种库的详细信息。

发布说明 / 迁移到新版本

GitHub

请在GitHub上查看RestInPeace

构建

.Net SDK

您需要安装最新的.Net 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 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 Standard的信息。

NuGet 包

此包未被任何NuGet包使用。

GitHub 仓库

此包未被任何流行的GitHub仓库使用。

版本 下载 最后更新
13.1.0 127 12/25/2023
13.0.0 122 12/24/2023
12.2.0 97 12/24/2023

v13.1.0
     - F# 中所有 `Response._TAsync` 函数(基于任务)现在都需要一个 CancellationToken。
     
     v13.1.0
     - 已删除 StartingContext,这意味着
       我们在这里放弃了一些安全措施,以预先配置 HTTP 请求
       而不指定 URL。这是我们愿意做出的妥协。

     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`。
       - 注意(!!):在 Dsl 和 DslCE 中将 `stringPart` 改为 `textPart` 并更改 `name` 和 `value` 的参数顺序。
       - 重新构建域中的类型
       - `Helper` 是一个模块而不是命名空间,某些内容已移动。
       - 配置中的所有转换器现在是一个转换器列表,而不是单个项目。
       - 删除 `setHttpClient`。请使用 `setHttpClientFactory` 代替。
       - `setHttpClientFactory` 接受一个 `Config` 作为输入参数。

     -----------------------------
     -- 以下是旧版发行说明 --
     -----------------------------
     
     v7.0.0
     - #92:`expect` 和 `assert` 传递原始响应而不是单位。

     v8.0.0
     - #93(感谢 @drhumlen):将内容类型 'text/json' 更改为 'application/json'。
     - Http 模块在 Dsl 和 DslCE 中始终自动打开。
     - 建造方法没有额外的模块。

     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)