#api-request #utilities #api-client #http-request #https #json-response

api-request-utils-rs

本库旨在提供一种简单高效的方法来制作 API 请求。它旨在用户友好、可定制和可扩展,使开发者能够轻松地将 API 集成到他们的 Rust 应用程序中。

13 个版本

0.2.5 2023 年 9 月 1 日
0.2.4 2023 年 8 月 31 日
0.2.1 2023 年 7 月 13 日
0.1.9 2023 年 7 月 7 日
0.1.7 2023 年 6 月 30 日

#441 in HTTP 客户端


用于 3 crates

MIT/Apache

18KB
99

api-request-utils

Crates.io Docs.rs

本库旨在提供一种简单高效的方法来制作 API 请求。它旨在用户友好、可定制和可扩展,使开发者能够轻松地将 API 集成到他们的 Rust 应用程序中。

特性

  • 提供发送 HTTP 请求和处理响应的便捷函数。
  • 处理不同类型请求错误的错误处理实用工具。
  • JSON 序列化和反序列化辅助工具。
  • 参数编码和查询字符串生成实用工具。
  • 请求构建器和修改器特质,用于定制和扩展。

安装

将以下行添加到您的 Cargo.toml 文件中

api-request-utils = "0.2.4" # Note : Latest version at time of writing

使用 api-request-utils-rs 的项目

以下是使用 api-request-utils-rs 的项目示例

如果您在自己的项目中使用 api-request-utils-rs,欢迎联系我将其添加到此列表中!

用法

在开始制作 API 请求之前,您需要创建一个实现必要特质的 API 客户端。以下是如何定义和实现 API 客户端结构的示例

use api_request_utils::*;

struct MyAPIClient {
    // Define your API client fields here such as the client
}

impl RequestInfo for MyAPIClient {
    const BASE_URL: &'static str = "https://api.example.com"; // Replace with the base url
    fn client(&self) -> &reqwest::Client {
        // Return your reqwest::Client instance here
    }
}

// Note : In most cases the default implementations are enough

impl RequestModifiers for MyAPIClient {} // Implement methods for adding headers, modifying requests, etc.

impl RequestDefaults for MyAPIClient {}  // Implement default headers, parameters, and request builders

impl RequestHandler for MyAPIClient {} // Default settings should be enought

制作 GET 请求

要制作 GET 请求,您可以使用由 RequestHandler 特质提供的 get_request_handler 方法。以下是一个示例

#[tokio::main]
async fn main() {
    let api_client = MyAPIClient::new();
    let parameters: HashMap<&str, serde_json::Value> = /* Define your request parameters */;
    let result = api_client.get_request_handler("endpoint", &parameters, |response| response, |error| {
        // Handle error cases
    }).await;

    match result {
        Some(response_data) => {
            // Process the response data
        }
        None => {
            // Handle the error case
        }
    }
}

制作 POST 请求

要制作 POST 请求,您可以类似地使用 post_request_handler 方法。以下是一个示例

#[tokio::main]
async fn main() {
    let api_client = MyAPIClient::new();

    let json_payload : String = /* Define your JSON payload */;
    let result = api_client.post_request_handler("endpoint", json_payload, |response| response, |error| {
        // Handle error cases
    }).await;

    match result {
        Some(response_data) => {
            // Process the response data
        }
        None => {
            // Handle the error case
        }
    }
}

错误处理

该库提供 RequestError 枚举来处理不同类型的请求错误。您可以在该枚举上使用模式匹配来处理特定的错误场景

use api_request_utils::RequestError;

match error {
    RequestError::RequestError(reqwest_error) => {
        // Handle request sending errors
    }
    RequestError::InvalidJsonBody(json_error) => {
        // Handle invalid JSON response body errors
    }
    RequestError::ErrorPayload(custom_error) => {
        // Handle custom error payloads from unsuccessful requests
    }
    RequestError::InvalidJsonBody(serde_json_error) => {
        // Handle invalid josn errors
    }
}

请注意,这里提供的示例是简化的,仅作为起点。如需详细了解该包的全面文档,请访问包文档,以便更好地理解包的功能和API。

贡献

欢迎贡献!如果您发现任何问题或对改进有建议,请打开一个问题或提交一个pull请求。

依赖

~3–18MB
~241K SLoC