Getting Started

エラーハンドリング

APIエラーを優雅に処理する方法

エラーハンドリング

Blitz Rocket APIは標準のHTTPステータスコードを使用し、一貫したエラー応答ボディを返します。

HTTPステータスコード

ステータスコード意味
200OK — リクエスト成功
201Created — リソースが正常に作成されました
400Bad Request — 無効なパラメータまたは必須フィールドの欠落
401Unauthorized — APIキーが欠落または無効
403Forbidden — 権限不足(例:プライベートエンドポイントに対する公開キー)
404Not Found — リソースが存在しません
429Too Many Requests — レート制限超過
500Internal Server Error — 当方のサーバーで問題が発生しています

エラー応答フォーマット

すべてのエラー応答は以下の構造に従います:

json
{
  "success": false,
  "error": "エラーの人間が読める説明"
}

よくあるエラー

APIキーの欠落

json
// ステータス: 401
{
  "success": false,
  "error": "APIキーが欠落しているか無効です"
}

プライベートキーが必要

json
// ステータス: 403
{
  "success": false,
  "error": "このエンドポイントはプライベートAPIキーが必要です"
}

リソースが見つかりません

json
// ステータス: 404
{
  "success": false,
  "error": "コンテストが見つかりません"
}

バリデーションエラー

json
// ステータス: 400
{
  "success": false,
  "error": "メールアドレスか電話番号のいずれかが必要です"
}

コードでのエラー処理

javascript
async function makeApiRequest(endpoint) {
  const response = await fetch(`https://blitzrocket.com/api/v1${endpoint}`, {
    headers: { "x-api-key": process.env.BLITZROCKET_API_KEY },
  });

  const data = await response.json();

  if (!data.success) {
    switch (response.status) {
      case 401:
        throw new Error("無効なAPIキーです。認証情報を確認してください。");
      case 403:
        throw new Error("権限が不足しています。プライベートAPIキーを使用してください。");
      case 404:
        throw new Error(`リソースが見つかりません: ${data.error}`);
      case 429:
        throw new Error("レート制限に達しました。バックオフして再試行してください。");
      default:
        throw new Error(`APIエラー: ${data.error}`);
    }
  }

  return data.data;
}