4 个版本
0.2.2 | 2021 年 11 月 14 日 |
---|---|
0.2.1 | 2021 年 11 月 14 日 |
0.2.0 | 2021 年 11 月 14 日 |
0.1.1 | 2021 年 11 月 13 日 |
#646 在 #api-client
89KB
2.5K SLoC
这是什么?
Supernova REST API 的客户端库。
用法
use iron_planet::{Supernova, RequestConfig};
fn main() {
// Instantiate an unprivileged client
let sn = Supernova::new();
let conf = RequestConfig::default();
// One can use it to query endpoints that require no auth
let result = sn.get_buildings(&conf); // Will succeed, hopefully
// But not to query endpoints that require user auth
let result = sn.get_class_inst(123, &conf); // Will fail, hopefully
// It is possible to enable authentication in two different ways
// One can provide authentication credentials in the form of a user-pass
// A successful login will return a result with the session token
let token = sn.login("user", "pass").unwrap();
sn.logout();
// The second one is to provide an existing token
sn.set_auth_token(token);
}
重要提示
- 每个响应都会进行缓存,目前除了实例化一个新的客户端外,没有其他方法可以绕过缓存。
- 在实例化时,可以通过调用
warmup()
来预先加载建筑物、课程、班级、部门和地点。这可能会以启动时的罚时(5 到 15 秒)为代价,加快后续访问。 - 如果不希望加载所有这些内容,可以单独调用
get_[collection]
函数。 - 大多数关系都通过绑定到客户端的特殊类型指针进行延迟加载。这些可以并发加载。
- 是的,这个库 是 线程安全的。可能会实现异步端口,但到目前为止还没有。
依赖项
~3–4.5MB
~114K SLoC