5 个版本
0.1.1 | 2020 年 7 月 28 日 |
---|---|
0.0.4 | 2018 年 11 月 6 日 |
0.0.3 | 2017 年 9 月 3 日 |
0.0.2 | 2017 年 8 月 26 日 |
0.0.1 | 2017 年 8 月 26 日 |
#2367 在 开发工具 中
每月 21 次下载
145KB
3K SLoC
数字海洋
一个用于与数字海洋 API 交互的 Crate。
在浏览此文档时,请鼓励参考 数字海洋文档。
基本示例
extern crate digitalocean;
use digitalocean::prelude::*;
use std::env;
fn main() {
let api_key = env::var("API_KEY")
.expect("API_KEY not set.");
let client = DigitalOcean::new(api_key)
.unwrap();
Droplet::list()
.execute(&client);
}
使用基础
所有值(Domain
、SshKey
等)可以在 api
模块中找到。
调用一个动作将返回一个 Request<_,_>
类型。例如 Droplet::create()
将创建一个 Request<Create, Droplet>
。这些类型可能有特定的进一步函数来构建请求或将其转换为其他请求。
extern crate digitalocean;
use digitalocean::DigitalOcean;
use digitalocean::api::Domain;
fn main() {
// Gets details of a specific domain.
let req = Domain::get("foo.com");
// Get the records for that domain instead (futher build the request)
let req = req.records();
// Get the records of a domain without having a prior request.
let req = Domain::get("foo.com").records();
// Create a new record for a domain
let req = Domain::get("foo.com").records().create("CNAME", "test", "127.0.0.1");
}
为了实现任何动作,必须使用 DigitalOcean
客户端调用 .execute()
。也可以调用 do_client.execute(some_request)
。
为了使用整个 API,建议参考各种 Request
类型。
设计
该 Crate 基于几个设计考虑
- 保持简单和通用。
- 紧密映射到数字海洋 API。
Request
对Client
是不可知的。- 应该难以发出无效的 API 请求。
- 尽可能使用静态调度。
- 应携带最少的必要信息。
- 允许轻松构建单独的客户端(
hyper
等) - 无缓存(目前尚无)。(数字海洋没有 ETags)
调试
此 Crate 使用 log
Crate。您可以通过传递环境变量等方式查看 digitalocean
日志
RUST_LOG=digitalocean=debug cargo run
开发状态
此 Crate 处于原型状态。
并非所有端点在生产DigitalOcean API上都已经经过完整的端到端测试。很可能有些端点会由于API返回的意外值而产生解析错误。
如果有什么地方不工作,请提交一个bug!
欢迎提供反馈、补丁和新增功能。请只打开一个issue或PR!
依赖项
~21MB
~444K SLoC