⚙️
DockerとrustでRestAPI
環境構築
は、こちらで
Cargo.toml
[package]
name = "backend"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
tokio = { version = "0.2", features = ["full"] }
warp = "0.2"
dotenv = "0.15.0"
main.rs
use dotenv::dotenv;
use std::env;
use warp::Filter;
#[tokio::main]
async fn main() {
dotenv().ok();
// GET /hello/warp => 200 OK with body "Hello, warp!"
//pathを定義
// hello 以下を String 型で受け取ることを宣言する。
let hello = warp::path!("hello" / String)
.map(|name| format!("Hello, {}!", name));
warp::serve(hello)
.run(([0, 0, 0, 0], 8083))
.await;
}
ポイント
- IPアドレスを0.0.0.0(0,0,0,0)にする
- ポート番号を8083
- docker-compose.ymlのrustコンテナのportsで設定したポート番号
- https://zenn.dev/marimoofficial/articles/cc21bf30b0fefc#:~:text=work/backend ports%3A --,8083%3A8083,-networks%3A - mov-app
warp::serve(hello)
.run(([0, 0, 0, 0], 8083))
.await;
にしましょう
APIテスターなどで
http://localhost:8083/hello/user-name
叩けました
なんで0.0.0.0に設定するか
dockerではなく、普通にrustの環境構築してmain.rsの記述でAPIを叩くと、
IPアドレスが127.0.0.1でも叩けます。
しかし、127.0.0.1はループバックアドレスの一つで、自分自身を表す特別なIPアドレスです。
今回dockerから叩いてるので、自分自身のIPアドレスでなく別ホストからでもアクセスできるIPアドレスを設定すると、APIが叩けるようになります。
参考: https://qiita.com/1ain2/items/194a9372798eaef6c5ab
Discussion