#digest #reqwest #async #send-request

diqwest

扩展reqwest以支持摘要认证流程的特质

12个版本 (稳定)

3.1.0 2024年6月20日
2.0.0 2023年11月24日
1.2.1 2023年8月17日
1.2.0 2023年5月11日
0.1.2 2021年10月14日

#103 in 身份验证

Download history 382/week @ 2024-04-26 332/week @ 2024-05-03 670/week @ 2024-05-10 711/week @ 2024-05-17 1264/week @ 2024-05-24 858/week @ 2024-05-31 823/week @ 2024-06-07 740/week @ 2024-06-14 463/week @ 2024-06-21 429/week @ 2024-06-28 571/week @ 2024-07-05 694/week @ 2024-07-12 1080/week @ 2024-07-19 1123/week @ 2024-07-26 1302/week @ 2024-08-02 945/week @ 2024-08-09

每月下载量:4,646
7 个crate中使用了(6个直接使用)

MIT 许可证

20KB
377

diqwest

此crate扩展了reqwest,以便能够发送带有摘要认证流程的请求。

当你发送一个带有摘要认证流程的请求时,这个初始请求将被执行。如果响应是401,则会解析www-authenticate头,并计算答案。初始请求再次执行,并添加额外的Authorization头。响应将通过send_with_digest_auth()返回。

如果第一个响应不是401,则直接从send_with_digest_auth()返回第一个响应,不做任何处理。如果第一个响应是401但缺少www-authenticate头,则第一个响应也将被返回。

diqwest是一个精简的crate,几乎没有依赖

  • reqwest,当然,因为diqwest是其扩展。没有任何启用功能和默认功能。
  • digest_auth用于计算答案。没有启用功能,也没有默认功能。
  • url用于在类型级别上验证URL。没有启用功能,也没有默认功能。

就是这样。没有使用其他依赖。甚至没有使用thiserror来强制使用它。

示例

异步(默认)

use diqwest::WithDigestAuth;
use reqwest::{Client, Response};

// Call `.send_with_digest_auth()` on `RequestBuilder` like `send()`
let response: Response = Client::new()
  .get("url")
  .send_with_digest_auth("username", "password")
  .await?;

阻塞(需要在Cargo.toml中启用blocking功能标志)

use diqwest::blocking::WithDigestAuth;
use reqwest::blocking::{Client, Response};

// Call `.send_with_digest_auth()` on `RequestBuilder` like `send()`
let response: Response = Client::new()
  .get("url")
  .send_with_digest_auth("username", "password")?;

依赖

~4–15MB
~202K SLoC