はじめに
本記事では、Rust と Axum を組み合わせて REST API を構築するシリーズの第一歩として、「Rust Axum セットアップと Hello World の表示」について解説します。
本シリーズで予定している内容は以下の通りです。
- 第1回(本記事):Rust Axum セットアップ〜Hello Worldまで
- 第2回:ルーティング・ミドルウェアの実装
- 第3回:SeaORMでDB接続・CRUDを完成させる
本記事の対象は、Rust の基礎文法は学んだものの、Web アプリ開発はこれから、という方です。最終回では DB アクセス層として SeaORM を組み合わせるため、Rust×SeaORMで学ぶORM入門も合わせて参考にしてください。
開発環境の準備
本記事では以下の環境を前提とします。
- Rust 1.75 以上(安定版)
- Cargo(Rust に同梱)
- VSCode + rust-analyzer 拡張機能(任意)
Rust のバージョンは、以下のコマンドで確認できます。
rustc --version
cargo --version
以下のようにバージョンが表示されれば準備完了です。
rustc 1.75.0 (82e1608df 2023-12-21)
cargo 1.75.0 (1d8b05cdd 2023-11-20)
なお、Rust のバージョンが古い場合は rustup update stable で最新の安定版に更新してください。
プロジェクトのセットアップ
まずは、Cargo で新しいプロジェクトを作成します。
cargo new axum-rest-api
cd axum-rest-api
作成直後のディレクトリ構成は以下の通りです。
axum-rest-api/
├── Cargo.toml
└── src/
└── main.rs
次に、Cargo.toml に Axum と Tokio の依存を追加します。
[dependencies]
axum = "0.7"
tokio = { version = "1", features = ["full"] }
axum は Web フレームワーク本体、tokio は非同期ランタイムです。Axum は Tokio 上で動作するため、両方をセットで導入する必要があります。
なお、Axum の公式ドキュメントは以下を参考にしてください。
Hello World エンドポイントの実装
Rust Axum セットアップが完了したので、Hello World を返すエンドポイントを実装していきます。以下の処理を src/main.rs に記述します。
use axum::{routing::get, Router};
#[tokio::main]
async fn main() {
// GET /hello にhello関数を割り当てる
let app = Router::new().route("/hello", get(hello));
// 127.0.0.1:3000 でHTTPサーバーを起動
let listener = tokio::net::TcpListener::bind("127.0.0.1:3000")
.await
.unwrap();
println!("サーバーを起動しました: http://127.0.0.1:3000");
axum::serve(listener, app).await.unwrap();
}
// /hello にGETリクエストが来たときに呼ばれるハンドラ
async fn hello() -> &'static str {
"Hello, World!"
}
これで、/hello に GET リクエストを投げると「Hello, World!」が返るシンプルな API になります。
注意:#[tokio::main] マクロを付け忘れると、非同期ランタイムが起動せずビルドエラーになります。忘れずに付けてください。
動作確認
実装が終わったので、動作確認をしていきます。まずは、以下のコマンドでサーバーを起動します。
cargo run
以下のログが出力されれば起動完了です。
サーバーを起動しました: http://127.0.0.1:3000
次に、別のターミナルから curl でアクセスします。
curl http://127.0.0.1:3000/hello
Hello, World! と表示されれば成功です。ブラウザから http://127.0.0.1:3000/hello にアクセスしても、同じ結果が得られます。

まとめ
今回は、Rust Axum セットアップから Hello World を返すエンドポイントの実装までを行いました。これにより、シリーズの土台となる最小構成の API が動く状態になりました。
次回は、ルーティングの分離やログ・CORS などのミドルウェア導入に取り組みます。より実践的な API に近づけていく内容になるので、合わせてご覧ください。
また、シリーズ最終回では SeaORM と組み合わせて DB アクセスまで実装します。ORM の基礎を先に押さえたい方は、Rust×SeaORMで学ぶORM入門も参考になります。