#rest #wrapper #rest-api #restfull #api-wrapper #api-bindings #api

rrw

一个用于轻松构建 REST-API 客户端的 crate。

3 个版本

0.1.2 2022 年 4 月 14 日
0.1.1 2022 年 3 月 14 日
0.1.0 2022 年 3 月 10 日

#15#rest-api

每月 25 次下载
用于 hafas-rest

GPL-3.0-or-later

34KB
486

RRW (Rust REST Wrapper)

一个用于轻松构建 REST-API 客户端的 crate。

示例

#[derive(Serialize)]
struct LocationQuery {
    query: String,
}

#[derive(Deserialize, Debug, PartialEq, Eq)]
struct Location {
    id: String,
    name: String,
}

#[rest]
impl Bahn {
    async fn location(&self, location: &LocationQuery) -> Result<Vec<Location>, reqwest::Error> {
        RestRequest::<&LocationQuery, ()>::get("/locations").query(location)
    }
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    env_logger::init();
    let bahn = Bahn::new(RestConfig::new("https://v5.db.transport.rest"));
    let berlin = LocationQuery {
        query: "Berlin".to_string(),
    };

    let results = bahn.location(&berlin).await?;

    for location in results {
        println!("{}: {}", location.id, location.name);
    }

    Ok(())
}

功能

  • 轻松构建 REST 包装器
  • 包含节流机制(目前不太先进,但可扩展)。

未来功能

  • 更先进的节流机制。
  • 身份验证(用户名/密码,OAuth)。

依赖关系

~5–21MB
~273K SLoC