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
18KB
99 行
api-request-utils
本库旨在提供一种简单高效的方法来制作 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", ¶meters, |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