2 个版本

0.2.5 2023 年 12 月 6 日
0.2.4 2023 年 12 月 6 日

#232HTTP 客户端


用于 3 crates

MIT/Apache

29KB
446

reqwest-middleware

一个实现 reqwest 包装器以允许客户端中间件链的 crate。

Crates.io Docs.rs CI Coverage Status

此 crate 提供构建和运行中间件的功能,但没有中间件实现。此仓库还包含一些有用的具体中间件 crate

关于浏览器支持的说明:自动测试针对 wasm 的功能已被禁用。该 crate 可能与 wasm 一起工作,但 wasm 支持未维护。欢迎提交改进 wasm 的 PR,但在合并之前,您需要重新引入测试并确保它们通过(请参阅 https://github.com/TrueLayer/reqwest-middleware/pull/105)。

概述

reqwest-middleware 客户端公开与普通 reqwest 客户端相同的接口,但 ClientBuilder 公开附加中间件的功能

# Cargo.toml
# ...
[dependencies]
reqwest = "0.11"
reqwest-middleware = "0.1.6"
reqwest-retry = "0.1.5"
reqwest-tracing = "0.2.3"
tokio = { version = "1.12.0", features = ["macros", "rt-multi-thread"] }
use reqwest_middleware::{ClientBuilder, ClientWithMiddleware};
use reqwest_retry::{RetryTransientMiddleware, policies::ExponentialBackoff};
use reqwest_tracing::TracingMiddleware;

#[tokio::main]
async fn main() {
    // Retry up to 3 times with increasing intervals between attempts.
    let retry_policy = ExponentialBackoff::builder().build_with_max_retries(3);
    let client = ClientBuilder::new(reqwest::Client::new())
        // Trace HTTP requests. See the tracing crate to make use of these traces.
        .with(TracingMiddleware::default())
        // Retry failed requests.
        .with(RetryTransientMiddleware::new_with_policy(retry_policy))
        .build();
    run(client).await;
}

async fn run(client: ClientWithMiddleware) {
    client
        .get("https://truelayer.com")
        .header("foo", "bar")
        .send()
        .await
        .unwrap();
}

许可证

根据您的选择,受 Apache 许可证第 2 版MIT 许可证 许可。
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在工作中的任何贡献,都应双许可如上,没有任何附加条款或条件。

第三方中间件

以下第三方中间件使用 request-middleware

依赖项

~4–18MB
~234K SLoC