56个版本 (14个稳定版)

2.2.0 2024年4月7日
2.1.2 2023年11月14日
2.1.1 2023年3月14日
2.0.1 2022年5月18日
0.0.5 2019年5月29日

#61 in HTTP客户端


2 个库 中使用

MIT/Apache

235KB
5K SLoC

bodhi REST API客户端

crates.io crates.io crates.io docs.rs

此库包含bodhi REST API的rust绑定,如官方API文档所述。

此库基于fedora库以支持认证会话,底层使用reqwest库进行网络调用,并使用serde进行JSON和x-www-urlencoded数据的序列化和反序列化。

报告错误

代码对bodhi服务器的一些行为进行了假设。如果这些假设被证明是错误的(无论是由于实现错误,还是因为服务器行为已更改),那么这将被视为错误。此外,已经有一些情况下,响应和接受的请求的架构已经改变。如果是这种情况,那么这也被视为错误。如果您遇到(反)序列化问题,请打开一个错误,并注明bodhi服务器版本,粘贴失败信息(其中应包含(反)序列化失败的原因,例如缺少/重命名的字段)。

库设计

此库尽可能地进行错误处理,但将服务器或网络相关的错误传递给调用者。例如,当一个bodhi服务器负载过重时,它有时会返回垃圾响应,其主体为空。另一方面,可能只是持续的网络问题导致服务器请求失败或超时。这些不是由库处理的,但会透明地包装并返回。如果需要,调用者可以重试请求。此库仅实现简单的重试逻辑以处理短暂故障,而不是持续客户端或服务器问题。

然而,BodhiClient只接受查询的引用,因此重试查询甚至不涉及复制数据,所以这非常便宜。

当前状态

  • 所有 GET 请求都得到了实现,所有实际的API响应都应该成功反序列化。
  • 所有 POST 请求都得到了实现,用于创建和编辑项目,但创建和编辑版本除外。

测试覆盖率

每次将提交推送到git时,都应该通过测试。然而,目前一些测试要么需要互联网访问来检查某些服务器行为的假设,要么需要太大的测试数据,无法提交到git。

因此,以下功能标志决定了哪些测试被编译和运行

  • offline-tests:能够在离线状态下运行的测试,没有先决条件(默认启用)
  • online-tests:需要互联网访问的测试(用于检查bodhi服务器行为)
  • data-tests:需要数据文件的测试(数据不是git仓库或发布crates的一部分,需要单独下载,但测试本身可以在离线状态下运行)

示例

examples 目录包含一些示例应用程序,用于测试和展示一些crate的功能。

依赖关系

~10–26MB
~360K SLoC