#http #gitlab #vault #http-api #api #sensu

已删除 teatime

实现HTTP API客户端的默认特性和数据类型

使用旧Rust 2015

0.4.3 2018年3月8日
0.4.2 2018年3月7日
0.4.0 2018年2月28日
0.3.0 2018年2月7日
0.1.1 2018年1月22日

#104 in #gitlab

BSD-3-Clause

29KB
549

Build Status

teatime

一个库,使在Rust中实现REST API工具变得更容易

文档

参考和用法文档在这里

贡献

有关贡献指南,请点击这里


lib.rs:

teatime

简化REST API实现的包装库

动机

在Rust中编写与REST API端点通信的工具时,通常需要使用hyper进行HTTP API请求时编写一些样板代码。这大多与编写处理futures的代码以及找到像headers和request body这样的修改方法的来源有关,这对来自命令式语言背景的程序员来说并不总是透明的。这个库抽象掉了一些这些细节,并允许用户忽略futures处理的细节,或者可选地降级到future级别,暴露出HTTP请求的API流程的构建器模式。此外,像JSON API自动分页和HTTP body到JSON转换这样的有用操作已经实现。

参考实现

包括三个参考实现,一个是Sensu的,一个是Gitlab的,还有一个是Vault的。这是定义没有默认实现的必要方法时常见模式的最佳例子。

使用teatime

teatime的大部分内容是通过HttpClientApiClientJsonApiClient特性行动的。还有一些数据结构可以帮助处理具有非常宽松类型模型的REST API时的类型安全。

请参阅ApiClientJsonApiClient的文档以及所有在lib.rs中定义的数据结构,因为这些将概述参数类型、返回类型和所需的实现部分。

传统请求-响应流程与基于未来的流程

一旦实现了ApiClient特性行为,API可以通过request方法(为hyper的Response类型)或request_json(自动将响应体转换为JSON)来创建。

对于需要使用期货的情况,请求-响应流程中有两种方法调用。第一种是 request_future。这将返回一个期货,可以在其他工作进行时保持原样。这对于 Response 和 JSON 流都适用。解析到 Response 和 JSON 对象的解析函数分别是 response_futureresponse_future_json

依赖项

~11–19MB
~279K SLoC