SuguruOoki / start-actix-web

0 stars 0 forks source link

Application #2

Open SuguruOoki opened 2 years ago

SuguruOoki commented 2 years ago

こちらのページを進めていく。

SuguruOoki commented 2 years ago

状態を持たせる際には次の手順がいる

SuguruOoki commented 2 years ago

Shared Mutable State

#[get("/")]
async fn index(data: web::Data<AppStateWithCounter>) -> String {
    let mut counter = data.counter.lock().unwrap(); // <- get counter's MutexGuard
    *counter += 1; // <- access counter inside MutexGuard

    format!("Request number: {counter}") // <- response with count
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    // Note: web::Data created _outside_ HttpServer::new closure
    let counter = web::Data::new(AppStateWithCounter {
        counter: Mutex::new(0),
    });

    HttpServer::new(move || {
        // move counter into the closure
        App::new()
            .app_data(counter.clone()) // <- register the created data
            .route("/", web::get().to(index))
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

実装を終えると次のような画面となる https://gyazo.com/7471612d31da54112ad2957b91e8ed4a

SuguruOoki commented 2 years ago

Using an Application Scope to Compose Applications

web::scopeについての理解はしたが、実装については別途時間がかかりそうなので、一旦スキップする。 スコープを絞ったりをしたいが、いまいちわかってないので、後ほど詳細を調査するものとする。

SuguruOoki commented 2 years ago

Rustのファイル分割などについてちゃんとキャッチアップの必要が出てきそう。 https://qiita.com/kerupani129/items/bd41d8a07daa31256aab

actix-webだけでなくて、Rustのエコシステム周りについても少しずつキャッチアップしていく必要がある。 現状RailsをやってRubyについて知らないのと全く同じ状態なので、できること少なくてきっついw