64 个版本

0.16.0 2024年7月4日
0.15.0 2024年3月26日
0.14.6 2023年12月21日
0.14.4 2023年11月22日
0.0.3 2022年3月28日

#41 in 网页编程

Download history 17577/week @ 2024-05-03 21951/week @ 2024-05-10 18874/week @ 2024-05-17 18654/week @ 2024-05-24 24948/week @ 2024-05-31 20305/week @ 2024-06-07 24435/week @ 2024-06-14 21803/week @ 2024-06-21 21703/week @ 2024-06-28 21439/week @ 2024-07-05 21958/week @ 2024-07-12 18158/week @ 2024-07-19 20704/week @ 2024-07-26 20082/week @ 2024-08-02 26674/week @ 2024-08-09 16468/week @ 2024-08-16

86,935 每月下载量
24 个 Crates 中使用 (直接使用 2 个)

Apache-2.0

270KB
6K SLoC

reqsign — 构建状态 最新版本 下载次数

轻松进行 API 请求签名。


大多数 API 都很简单。但是,当它们被复杂抽象隐藏起来时,它们可能会变得复杂。 reqsign 将简单的 API 带回来:构建、签名、发送。

快速入门

use anyhow::Result;
use reqsign::AwsConfig;
use reqsign::AwsLoader;
use reqsign::AwsV4Signer;
use reqwest::Client;
use reqwest::Request;
use reqwest::Url;

#[tokio::main]
async fn main() -> Result<()> {
    // Signer can load region and credentials from environment by default.
    let client = Client::new();
    let config = AwsConfig::default().from_profile().from_env();
    let loader = AwsLoader::new(client.clone(), config);
    let signer = AwsV4Signer::new("s3", "us-east-1");
    // Construct request
    let url = Url::parse("https://s3.amazonaws.com/testbucket")?;
    let mut req = reqwest::Request::new(http::Method::GET, url);
    // Signing request with Signer
    let credential = loader.load().await?.unwrap();
    signer.sign(&mut req, &credential)?;
    // Sending already signed request.
    let resp = client.execute(req).await?;
    println!("resp got status: {}", resp.status());
    Ok(())
}

功能

  • 纯 Rust,依赖最少。
  • 测试官方 SDK 和服务。
  • 支持的服务
    • 阿里云 OSS: reqsign::AliyunOssSigner
    • AWS 服务(SigV4): reqsign::AwsV4Signer
    • Azure 存储服务: reqsign::AzureStorageSigner
    • 谷歌服务: reqsign::GoogleSigner
    • 华为云 OBS: reqsign::HuaweicloudObsSigner

贡献

查看 CONTRIBUTING.md 指南以获取有关如何为此项目贡献的更多详细信息。

寻求帮助

提交 问题 进行错误报告或在 讨论 中提问。

致谢

从以下项目中获得了大量灵感

许可

Apache 许可证第 2 版 下许可。

依赖项

~3–18MB
~277K SLoC