8 个版本
0.2.0 | 2023年5月25日 |
---|---|
0.1.6 | 2023年5月19日 |
#15 in #非官方
每月下载 100 次
9KB
108 行
zyte-api-rs
允许访问 Zyte API 代理服务。
这是一个非官方、不稳定、未完成的包。然而,使用 HTTP GET
进行正常使用应该没有问题。
先决条件
- 您必须拥有 Zyte 的账户和 API 令牌,以便使用其代理 API 服务: https://www.zyte.com/zyte-api/
- 目前此包仅支持
async
/await
使用,因此您必须使用异步执行器,例如 https://github.com/tokio-rs/tokio。
安装
cargo add zyte-api-rs
示例
use zyte_api_rs::ZyteApi;
#[tokio::main]
async fn get_google() {
let zyte_api = ZyteApi::new("<MY_ZYTE_API_KEY>");
// simple GET
let response = zyte_api.get("https://www.google.com/").await.unwrap();
// status_code is from http::Method
if response.status_code.is_success() {
println!("{}", response.http_response_body);
}
let response = zyte_api
.post("https://httpbin.org/post")
.unwrap()
.text(r#"{"custname": "foobar"}"#)
.send()
.await
.unwrap();
if response.status_code.is_success() {
println!("{}", response.http_response_body);
}
}
功能
请求
-
HTTP
-
GET
-
POST
-
httpResponseBody
-
httpResponseText
-
-
-
浏览器
-
头部信息
响应
- 正常响应
- 错误响应
设计目标
- 使
zyte-api-rs
的Response
对象尽可能镜像官方 API 的Response
模式: https://docs.zyte.com/zyte-api/usage/reference.html - 拥有类似于 https://github.com/seanmonstar/reqwest 的易于使用的 "builder" 接口
- 向 zyte API 发送请求的 JSON 结构比较复杂,不同功能具有互斥的键 -- 此项目旨在 "使无效状态不可表示"
- 学习惯用 Rust -- 请提交关于编写不佳的代码的问题: https://github.com/isaacimholt/zyte-api-rs/issues
备注
- 状态码实际上是一个
http::StatusCode
的实例,这允许更有用的语义,例如status_code.is_success()
。
依赖项
~4–20MB
~262K SLoC