3个版本
0.1.2 | 2022年8月31日 |
---|---|
0.1.1 | 2022年8月31日 |
0.1.0 | 2022年8月31日 |
#1982 in 编码
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