小编Cli*_*ger的帖子

如何使用 actix 在函数内部使用数据库池?

我为 MySQL 数据库创建了一个池,如下所示:

let database_url = env::var("DATABASE_URL").expect("set DATABASE_URL");

let manager = ConnectionManager::<MysqlConnection>::new(database_url);
let pool = r2d2::Pool::builder()
    .build(manager)
    .expect("Failed to create pool.");
Run Code Online (Sandbox Code Playgroud)

像这样包含在 actix 中:

HttpServer::new(move || App::new()
    .data(pool.clone()) // <-- HERE
    .service(
        web::resource("/infos")
          .route(web::post().to(get_infos))
    ))

    .bind("127.0.0.1:8080")?
    .start();

println!("Starting http server: 127.0.0.1:8080");
Run Code Online (Sandbox Code Playgroud)

问题来了,如何在这个 info 函数中使用它:

pub fn get_infos(conn: &MysqlConnection) -> Vec<Book> {
    all_books
        .order(books::id.desc())
        .load::<Book>(conn)
        .expect("error loading the books")
}
Run Code Online (Sandbox Code Playgroud)

直接将 MySQL 连接的一个实例传递给 get_infos 运行良好,但使用池我不知道如何处理它?!有什么帮助吗?

为了获得更多说明,我的目标是使用 POOLING 而不是仅使用一个实例,就像此代码中的情况一样:

let database_url = env::var("DATABASE_URL").expect("set DATABASE_URL");
let conn = MysqlConnection::establish(&database_url).unwrap();
// And then passing …
Run Code Online (Sandbox Code Playgroud)

rust rust-diesel actix-web

6
推荐指数
1
解决办法
2042
查看次数

使用 actix-web 捕获来自 HTML 页面的 GET 和 POST 请求

我在提交 HTML 表单以捕获 FORM 中请求的详细信息时收到一条错误消息(我正在使用 actix-web)。

当我提交表格时,我收到此错误:

Content type error

使用的代码:

#[derive(Deserialize)]
struct FormData {
    paire: String,
}


fn showit(form: web::Form<FormData>) -> String {
    println!("Value to show: {}", form.paire);
    form.paire.clone()
}

....

.service(
  web::resource("/")
    .route(web::get().to(showit))
    .route(web::head().to(|| HttpResponse::MethodNotAllowed()))
))

Run Code Online (Sandbox Code Playgroud)

使用的 HTML 表单:

<form action="http://127.0.0.1:8080/" method="get">
<input type="text" name="paire" value="Example of value to show">
<input type="submit">
Run Code Online (Sandbox Code Playgroud)

预期结果将是:

要显示的值的示例

rust actix-web

5
推荐指数
1
解决办法
2037
查看次数

标签 统计

actix-web ×2

rust ×2

rust-diesel ×1