2 个版本
0.2.5 | 2023 年 12 月 6 日 |
---|---|
0.2.4 | 2023 年 12 月 6 日 |
#232 在 HTTP 客户端
用于 3 crates
29KB
446 行
reqwest-middleware
一个实现 reqwest 包装器以允许客户端中间件链的 crate。
此 crate 提供构建和运行中间件的功能,但没有中间件实现。此仓库还包含一些有用的具体中间件 crate
reqwest-retry
: 重试失败的请求。reqwest-tracing
:tracing
集成,可选的 opentelemetry 支持。
关于浏览器支持的说明:自动测试针对 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
reqwest-conditional-middleware
- 基于请求的中间件http-cache
- HTTP缓存规则reqwest-cache
- HTTP缓存aliri_reqwest
- 背景令牌管理和更新http-signature-normalization-reqwest
(非自由软件) - HTTP签名reqwest-chain
- 对任何reqwest响应应用自定义标准,决定何时以及如何重试。
依赖项
~4–18MB
~234K SLoC