Pam*_*uda 4 rust scylla actix-web
我使用 crate scylla 使用 tokio 1,所以我必须使用 crate actix-web 4.0 beta。现在我遇到使用 actix_web::client::Client 显示错误的问题:
3 | use actix_web::client::Client;
| ^^^^^^ could not find `client` in `actix_web`
Run Code Online (Sandbox Code Playgroud)
我想使用以下代码访问 actix 处理程序内的 API:
pub(crate) async fn proses_mapmatching(data: web::Data<AppState>) -> impl Responder {
let client = Client::default();
let res = client.post("http://localhost:8002/trace_route")
.send()
.await
.unwrap()
.body()
.await;
println!("Response: {:?}", res);
HttpResponse::Ok().body(format!("Hello {:?}", res))
}
Run Code Online (Sandbox Code Playgroud)
是否仍然使用 actix-web 4 和 reqest post insede 处理函数?谢谢
使用 AWC 回答代码 - 感谢 @kmdreko 先生
pub(crate) async fn proses_mapmatching(data: web::Data<AppState>) -> impl Responder {
let mut client = awc::Client::default();
let response = client.post("http://localhost:8002/trace_route")
.send_body("Raw body contents")
.await;
println!("Response: {:?}", response.unwrap().body().await);
HttpResponse::Ok().body(format!("Hello {}!", rows.len()))
}
Run Code Online (Sandbox Code Playgroud)
actix_web v4.0 的Changes.md中提到了这一点:
该
client模组已被删除。客户端现在应该awc直接使用。
自 1.0 版本发布以来,该actix_web::client模块长期以来一直是板条箱的包装器,但他们现在似乎希望将它们完全分开。awc
类型awc应该与之前版本中公开的类型几乎相同actix_web,但是如果您将其与(当前处于测试版)一起使用actix_web:4.0,那么您将需要使用awc:3.0(当前处于测试版)以实现兼容性。