4个版本
0.2.1 | 2024年3月14日 |
---|---|
0.2.0 | 2024年2月19日 |
0.1.1 | 2024年2月14日 |
0.1.0 | 2024年2月14日 |
#23 in #api-request
被用于 trakt-rs
59KB
1.5K SLoC
trakt-rs
一个用于 Trakt.tv API 的纯 Rust 库
Trakt.tv API 文档: https://trakt.docs.apiary.io
使用方法
此库不提供制作 HTTP(s) 请求的客户端。这留给用户处理。这使得用户可以使用任何他们喜欢的 HTTP 客户端(例如 reqwest
,hyper
,isahc
等)以及任何 TLS 后端(例如 native-tls
,rustls
等)以同步或异步的方式。
相反,该库提供了一套请求和响应类型,这些类型可以转换为通用目的的 http::Request
和 http::Response
类型。这些类型填充了整个 HTTP 请求,包括 URL、头和正文。然而,用户仍然可以在发送请求之前对其进行修改。
这种方法的优势在于用户在请求方式上具有无限的可塑性。他们可以使用任何 HTTP 客户端,任何 TLS 后端,以及任何请求/响应处理机制。此外,用户可以在发送请求之前或接收响应之后对请求进行修改。
这也意味着此库的依赖关系树较小,因为它不依赖于运行时或 HTTP 客户端库。
示例
use trakt_rs::{Request, Response};
// Context required for all requests
let ctx = trakt_rs::Context {
base_url: "https://api.trakt.tv",
client_id: "client_id",
oauth_token: None,
};
// Create a request and convert it into an HTTP request
let req = trakt_rs::api::movies::summary::Request {
id: trakt_rs::smo::Id::Imdb("tt123456".into()),
};
let http_req: http::Request<Vec<u8>> = req.try_into_http_request(ctx).unwrap();
// Send the HTTP request using your preferred HTTP client
let response = http::Response::new(vec![]);
// Convert the HTTP response into a Trakt response
let trakt_response = trakt_rs::api::movies::summary::Response::try_from_http_response(response).unwrap();
println!("Movie: {:?}", trakt_response.0);
许可证:MIT
依赖项
~2.5–3.5MB
~61K SLoC