#api-wrapper #api-client #async-api #api-bindings #jobs-api

adzuna

一个易于使用、异步和完整的 Adzuna API 交互 API 包装器

3 个稳定版本

1.0.2 2023年2月6日

#2174网页编程

GPL-3.0-only

31KB
610

Adzuna API 包装器

一个易于使用、异步和完整的 Rust crate,用于与 Adzuna API 交互。

Documentation Crate GPLv3 License

安装

通过 cargo,将以下内容添加到您的项目 Cargo.toml

[dependencies]
adzuna-rs = "1.0.2"

用法

首先,通过 注册 获取 api_idapi_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