Sprint Cycle 17

/api/v1/config公開設定、
テスト15件到達、APIデプロイ準備

2026-02-23 5 min read

概要

Sprint Cycle 17では、フロントエンドクライアント向けの公開設定API(/api/v1/config)を新設し、テストを13件から15件に強化しました。さらにFly.ioへのAPIデプロイ準備としてmiseban-ai-apiアプリを作成し、CORSの4オリジン許可設定も完了。全15テスト合格、cargo check警告ゼロの状態でデプロイ準備が整いました。

対応内容状態
GET /api/v1/config エンドポイント追加完了
テスト強化(13→15件)完了
Fly.io APIアプリ作成(miseban-ai-api)完了
CORS設定(4オリジン許可)完了

1. GET /api/v1/config エンドポイント追加

フロントエンドクライアントがAPIサーバーの設定情報を取得するための公開エンドポイントを追加しました。認証不要で、シークレット情報は一切含まない安全な設計です。

レスポンスには以下の情報が含まれます。

#[derive(Serialize)]
struct PublicConfig {
    api_version: &'static str,
    supabase_url: String,
    features: Vec<&'static str>,
}

async fn get_public_config() -> Json<PublicConfig> {
    // DATABASE_URLからSupabase URLを自動抽出
    // features: frames, stats, alerts, billing, ...
}

Supabase URLは環境変数DATABASE_URLから自動的に抽出されるため、デプロイ先ごとに個別に設定する必要がありません。フロントエンドはこのエンドポイントを起動時に一度呼び出すだけで、必要な接続情報と利用可能機能の一覧を取得できます。

2. テスト強化(13→15件)

今回のスプリントで2件のテストを追加し、テスト合計を15件に引き上げました。

config_returns_api_version_and_features

新設した/api/v1/configのレスポンス構造を検証するテストです。api_versionフィールドの存在、features配列の内容、supabase_urlの形式を確認します。

authenticated_endpoints_require_auth

認証が必須な9つのエンドポイントに対して、認証トークンなしでリクエストした場合に全て401 Unauthorizedを返すことを一括検証するテストです。

// 9つの認証必須エンドポイントを一括テスト
let endpoints = vec![
    ("/api/v1/stores/me/stats", "GET"),
    ("/api/v1/stores/me/stats/weekly", "GET"),
    ("/api/v1/stores/me/stats/hourly", "GET"),
    // ... 6 more
];
for (uri, method) in endpoints {
    let response = app.oneshot(request).await.unwrap();
    assert_eq!(response.status(), StatusCode::UNAUTHORIZED);
}

このテストにより、認証ミドルウェアの適用漏れを防止できます。新しい認証必須エンドポイントを追加する際は、このリストに追加するだけで自動的にテスト対象になります。

3. Fly.io APIアプリ作成

本番APIサーバーのデプロイ先として、Fly.ioにmiseban-ai-apiアプリを作成しました。

ランディングページ(miseban-ai.fly.dev)とAPIサーバー(miseban-ai-api.fly.dev)を分離することで、それぞれ独立したスケーリングとデプロイが可能になります。

4. CORS設定

APIサーバーのCORS設定として、以下の4オリジンを許可しました。

オリジン用途
https://misebanai.com本番ドメイン
https://www.misebanai.com本番ドメイン(www付き)
https://miseban-ai.fly.devFly.ioランディングページ
http://localhost:3001ローカル開発環境

本番・Fly.io・ローカル開発の全環境からAPIへのリクエストが正常に処理されます。許可リストに含まれないオリジンからのリクエストはブラウザのCORSポリシーによりブロックされるため、セキュリティも確保されています。

テスト結果

15テスト合格cargo check警告ゼロ。既存テストへの影響はありません。

指標BeforeAfter
テスト合格数13/1315/15
cargo check警告00
新規エンドポイント-1件(/api/v1/config)
CORS許可オリジン-4オリジン

公開設定APIの追加により、フロントエンドが必要な情報をセキュアに取得できる仕組みが整いました。テストも15件に到達し、認証必須エンドポイントの網羅的な検証を実現。Fly.ioへのAPIデプロイ準備も完了し、次のスプリントでは本番デプロイとモニタリング設定に進みます。

← ブログ一覧に戻る 無料で始める →