使用旧Rust 2015
0.4.3 |
|
---|---|
0.4.2 |
|
0.4.0 |
|
0.3.0 |
|
0.1.1 |
|
#104 in #gitlab
29KB
549 行
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的大部分内容是通过HttpClient
、ApiClient
和JsonApiClient
特性行动的。还有一些数据结构可以帮助处理具有非常宽松类型模型的REST API时的类型安全。
请参阅ApiClient
和JsonApiClient
的文档以及所有在lib.rs
中定义的数据结构,因为这些将概述参数类型、返回类型和所需的实现部分。
传统请求-响应流程与基于未来的流程
一旦实现了ApiClient
特性行为,API可以通过request
方法(为hyper的Response
类型)或request_json
(自动将响应体转换为JSON)来创建。
对于需要使用期货的情况,请求-响应流程中有两种方法调用。第一种是 request_future
。这将返回一个期货,可以在其他工作进行时保持原样。这对于 Response
和 JSON 流都适用。解析到 Response
和 JSON 对象的解析函数分别是 response_future
和 response_future_json
。
依赖项
~11–19MB
~279K SLoC