#http-request #requests #post

tinyfetch

一个轻量级的Rust库,用于轻松发送HTTP请求

1 个不稳定版本

0.1.0 2023年5月21日

63 in #post

MIT 许可证

9KB
77

TinyFetch是一个轻量级的Rust库,可以轻松发送HTTP请求。它提供简单一致的用户界面,用于执行GETPOSTPUTPATCHDELETE请求。它建立在reqwest包之上,旨在易于使用和维护。

使用方法

tinyfetchtokio包作为依赖项添加到你的Rust项目的Cargo.toml文件中

[dependencies]
tinyfetch = "0.1.0"
tokio = { version = "1", features = ["full"] }

TinyFetch结构体导入到你的Rust代码中

use tinyfetch::TinyFetch;

现在你可以使用TinyFetch方法执行HTTP请求。以下是如何使用每个方法的示例

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // GET
    let response = TinyFetch::get("https://dummyjson.com/products/").await?;
    println!("GET Response: {}", response);

    // POST
    let body = r#"
    {
        "name": "Example Product",
        "price": 9.99,
        "quantity": 10
    }
    "#;

    let response = TinyFetch::post("https://dummyjson.com/products/add", body).await?;
    println!("POST Response: {}", response);

    // PUT
    let body = r#"
        {
            "name": "Updated Product",
            "price": 19.99,
            "quantity": 5
        }
    "#;

    let response = TinyFetch::put("https://dummyjson.com/products/1", body).await?;
    println!("PUT Response: {}", response);

    // PATCH
    let body = r#"
        {
            "price": 14.99
        }
    "#;

    let response = TinyFetch::patch("https://dummyjson.com/products/1", body).await?;
    println!("PATCH Response: {}", response);

    // DELETE
    let response = TinyFetch::delete("https://dummyjson.com/products/1").await?;
    println!("DELETE Response: {}", response);

    Ok(())
}

确保在你的main函数上使用#[tokio::main]属性来启用与Tokio的异步执行。

支持的HTTP方法

TinyFetch支持以下HTTP方法

  • GET: TinyFetch::get(url: &str) -> Result<String, Box<dyn std::error::Error>>
  • POST: TinyFetch::post(url: &str, body: &str) -> Result<String, Box<dyn std::error::Error>>
  • PUT: TinyFetch::put(url: &str, body: &str) -> Result<String, Box<dyn std::error::Error>>
  • PATCH: TinyFetch::patch(url: &str, body: &str) -> Result<String, Box<dyn std::error::Error>>
  • DELETE: TinyFetch::delete(url: &str) -> Result<String, Box<dyn std::error::Error>>

每个方法都接受一个字符串参数URL,并返回一个包含响应体字符串或错误的Result。

错误处理

TinyFetch使用Rust的错误处理机制来传播错误。如果在HTTP请求过程中发生错误,它将以Box的形式返回。您可以使用标准的Rust错误处理技术,如?或模式匹配,在您的代码中处理这些错误。

运行测试

cargo test

贡献

欢迎对TinyFetch做出贡献!如果您遇到任何问题或有改进建议,请在GitHub仓库中提交一个问题。我们也欢迎拉取请求。

要为项目做出贡献,请按照以下步骤操作

  1. 将仓库分叉并克隆到您的本地机器。
  2. 为您的功能或错误修复创建一个新的分支。
  3. 进行更改并确保代码通过所有测试。
  4. 为任何新的功能或更改编写测试。
  5. 提交您的更改并将它们推送到您分叉的仓库。
  6. 在主仓库上提交拉取请求。

请确保您的代码遵循既定的编码风格和约定。添加测试以覆盖新功能,并确保现有测试通过。

许可

TinyFetch是开源软件,根据MIT许可证授权。有关更多详细信息,请参阅LICENSE文件。

联系

对于任何进一步的查询或问题,请通过GitHub仓库联系TinyFetch的维护者。

致谢

TinyFetch受到Ruby的HTTParty库的简单性和功能性的启发。特别感谢reqwesttokio的开发者,他们提供了必要的工具和库,使得这个项目成为可能。

依赖关系

~5–20MB
~249K SLoC