3 个稳定版本
1.0.2 | 2023年2月6日 |
---|
#2174 在 网页编程
31KB
610 行
Adzuna API 包装器
一个易于使用、异步和完整的 Rust crate,用于与 Adzuna API 交互。
安装
通过 cargo
,将以下内容添加到您的项目 Cargo.toml
[dependencies]
adzuna-rs = "1.0.2"
用法
首先,通过 注册 获取 api_id
和 api_key
,然后您可以实例化一个 Client
use adzuna::{Client, RequestBuilder};
let client = Client::new("API_ID".into(), "API_KEY".into());
我们还需要导入 RequestBuilder
trait,以便在构建的请求上调用 .fetch()
您可以通过此 client
访问所有端点。调用端点将返回一个请求构建器,允许您以惯用的方式配置查询参数进行链式调用。
在自定义查询后,您必须调用 .fetch()
,这将异步发送请求,并以 Result<T, AdzunaError>
的形式返回数据。可选的 AdzunaError
包含有关 API 返回的错误的信息
AdzunaError {
api_error: Some(
ApiException {
exception: "AUTH_FAIL",
doc: "https://api.adzuna.com/v1/doc",
display: "Authorisation failed",
},
),
http_status: 401,
}
示例
获取德克萨斯州 SWE 的顶级公司
let companies = client
.top_companies()
.what("software engineering")
.location("US")
.location("Texas")
.fetch()
.await;
在波士顿 5 公里内搜索 UI 设计工作
let jobs = client
.search()
.what("ui design")
.where("boston")
.distance(5)
.fetch()
.await;
按薪资降序搜索兼职销售工作
use adzuna::models::{SortBy, SortDirection};
let jobs = client
.search()
.what("sales")
.sort_by(SortBy::Salary)
.sort_dir(SortDirection::Down)
.fetch()
.await;
生成数据分析师工作的薪资数据直方图
let jobs = client
.histogram()
.what("data analyst")
.fetch()
.await;
运行测试
测试需要按顺序运行以避免受到速率限制。您还需要提供用于身份验证的环境变量
API_ID=123 API_KEY=abc cargo test -- --test-threads 1
贡献
贡献总是受欢迎!此 crate 目前涵盖了官方文档中提到的所有端点,但如果您发现缺少某些内容或遇到错误,请随时打开一个问题或创建一个 pull request。
依赖项
~6–19MB
~280K SLoC