3个版本

0.1.2 2022年8月31日
0.1.1 2022年8月31日
0.1.0 2022年8月31日

#1982 in 编码

MIT许可证

10KB
107 代码行

Fwetch

此包

使用 Reqwest Franklin Blanco

从JavaScript世界带来,这是一个fetch()的实现。但正如其名所示,它使用了reqwest。

如何使用此crate?

有用特性

Fwetch

// Say you have a struct
#[derive(Serialize, Deserialize)] // <-- This is from serde (serde.rs)
struct Person{
	pub name: String
}
// If this panics you will get more context regarding what happened than you usually would with reqwest.
let person: Person = fwetch("testurl.com", Method::Get, None, None).await.unwrap();
// You can now use this struct freely.

与Actix-web的互操作性(名为"actix"的可选功能)。在Cargo.toml中添加以启用

[dependencies]
fwetch = { version = "0", features = ["all"] }

这允许您用两行代码创建代理!使用convert_actix_request_to_reqwest()将actix请求转换为reqwest,并用forward_request()发送

use actix_web::{HttpRequest, HttpResponse, web};

use serde_json::Value;

use fwetch::helpers::actix::{convert_actix_request_to_reqwest, forward_reqwest};

[post("/some/route")]
async fn route(request: HttpRequest, body: web::Json<Value>) -> HttpResponse {
	let converted_request = convert_actix_request_to_reqwest(&request, &body.0).unwrap();
	forward_reqwest(converted_request).await.unwrap()
}

与Reqwest相关的已知问题

如果您收到一个非常长且令人困惑的编译错误,那可能是因为您没有openssl(或者至少是reqwest需要的版本)。解决方案:(Cargo.toml)

[dependencies]
openssl = { version = "0.10", features = ["vendored"] }

依赖关系

~6–19MB
~285K SLoC