API の背後に隠された真実:ステータスコード、エラーコード、そしてアサーションの意味

この記事では、APIのステータスコード、エラーコード、アサーションについて詳しく解説し、APIコールの成功や失敗をどのように判断するかを説明します。これらの要素により、開発者はAPIと対話する際に問題をより効果的に診断し、解決することができるでしょう。

「HTTP ステータスコード 200 だ!完璧!待って… なぜエラーメッセージが表示されているの?!」
こんにちは、ステータスコードとエラーコードの魅力的な世界へようこそ——ここで成功は常に表面上のものであり、緑色の信号が目的地に到達したことを意味するとは限らない場所です。

このガイドは迷路を-navigationするためのロードマップです:

  • 初めての停留所:ステータスコードとは究極何なのか?(ヒント:宅配便がドアの前に「荷物を配達しました!」または「住所が見つかりません!」と叫んでいるようなものです。)
  • 次に、エラーコード について掘り下げます——レスポンスボディーの中で「ノー、あなたのリクエストは技術的には成功しましたが、実際には失敗した」と言っている那些神秘的な小さな小妖精たちです。
  • そして最後に、新しい最高の友達に出会うrolley coaster amiento:アサーション。API のウソ見抜きテストと考えてください——すべてが よさそう に見える場合でも隠れた失敗を嗅ぎ分けます。

終わりまでに、API が本当に適切に動作しているのか、それともクラスで「出席」を宣言しながら窓から抜け出している学生のようにふるまっているだけなのかを判断する方法がわかるでしょう。

第 1 章:ステータスコードとは何ですか?

宅配便のアナロジー

荷物を送るのを想像してみてください。クーリエの更新は残酷に素っ気ないです:

  • 「配達済み。」(200)
  • 「住所が見つかりません。」(404)
  • 「この荷物を送ることはできません。」(403)
  • 🛠 「倉庫が爆発しました。」(500)

それが HTTP ステータスコードが行うこと——サーバーがリクエストの技術的なレベルでの進行状況について、(親切でなかったり)あなたのドアの前に叫び返していることです。

一般的な HTTP ステータスコード:

ステータスコード 意味 実際の例
200 OK、リクエストに成功 ログインに成功、データを取得
201 作成済み 新しいユーザーまたは注文が作成されました
204 ノンコンテンツ 削除が成功し、返信する必要はありません
400 バリーリクエスト 欠落したフィールド、無効な形式
401 無許可 欠落または期限切れのトークン
403 禁止 あなたは管理者ではありません、フレンド
404 見つかりません ユーザーID?ええ、それは存在しません
500 インターナルサーバーエラー DB のメルトダウン、コードパニック、など
💡 ステータスコードを交通信号と考えてください——それらは高速道路が開いているかどうかを教えてくれますが、トランクの中身は教えてくれません。

第 2 章:エラーコードって… 何?

エラーコード

API を呼び出します。ステータスコードは 200 です。うなずきます。「ナイス、すべて緑だ。」

レスポンスボディーを覗いてみると——ボン!

{
  "error": true,
  "internalError": false,
  "code": 106,
  "message": "No matching joke found",
  "causedBy": [
    "No jokes were found that match your provided filter(s)."
  ]
}

うーん、何?! 「200 は成功を意味すると思ったのに!」
ヒネリ:技術的にはそうでした。

事実爆弾:HTTP ステータス ≇ ビジネス上の成功

HTTP ステータスコード(200 、404)はただの封筒です。
サーバーが リクエストを受信し、応答した かどうかを教えてくれますが、あなたの 実際のリクエストが意味をなしているかどうか は教えてくれません。

  • ステータスコード = 200:おめでとう!サーバーは生きていて応答しています。
  • code = INVALID_REQUEST:ああ。データが間違っており、ビジネスロジックが失敗しました。
HTTP ステータスはドアマンです。ビジネスエラーコードは採用担当者です。ドアに入れた…… でも却下されてしまった。

それでは、エラーコードとは何ですか?

エラーコードは、バックエンド開発者が ビジネスロジックの失敗 を表すためにカスタムで作成されたものです。
ログインが失敗する、製品が在庫切れ、クレジットカードが期限切れ——そのような実生活のメスを表します。

異なるチームは異なるコードを定義しますが、以下は通常のもの:

一般的なビジネスエラーコード

エラーコード 使用場所 意味
INVALID_REQUEST ジェネリック 欠落したフィールド、間違った型
UNAUTHORIZED ジェネリック ユーザーがログインしていない、トークンが無効
FORBIDDEN ジェネリック あなたには許可がない
NOT_FOUND ジェネリック リソースが存在しない
CARD_EXPIRED PayPal カードの就寝時間が過ぎている
INSUFFICIENT_FUNDS PayPal 資金が不足しています。パニックの時間です
INVALID_ARGUMENT Google API 引数が範囲外、または間違ったフォーマット
ALREADY_EXISTS Google API リソースが既に存在する
PERMISSION_DENIED Google API アクセスが許可されていない

エラー応答の例

Stripe スタイル:

{
  "error": {
    "type": "invalid_request_error",
    "code": "resource_missing",
    "message": "No such customer: 'cus_123'"
  }
}

PayPal スタイル:

{
  "name": "CARD_EXPIRED",
  "message": "The card is expired.",
  "details": [
    {
      "field": "/payment_source/card/expiry",
      "issue": "CARD_EXPIRED"
    }
  ]
}

しかし、標準のエラーコードがない場合はどうしますか?

有时候、バックエンドチームが…… 翼を使います。または共有ドキュメントがない。
以下のことができます:

  1. バックエンドに尋ねる:「よう、グローバルエラーコードドキュメントがある?」
  2. 繰り返し発生する問題をキャッチするためのアサーションを作成する。
  3. チームで適切なエラーコード戦略を推進する——私をtrust me、未来のあなたは感謝します。
HTTP ステータスは電源がオンかどうかを教えてくれます。エラーコードはライトが本当に点灯したかどうかを教えてくれます。

ステータスコード対エラーコード:レイヤーを知る

レイヤー 定義元 目的
ステータスコード HTTP 標準(IETF) リクエストが技術的に成功したかどうか 200、404、500
エラーコード あなた / あなたの会社 ビジネスロジックが成功したかどうか CARD_EXPIRED、PERMISSION_DENIED
💡 ステータスコード = 「エレベーターは正常に動作したか?」
エラーコード = 「正しい階に着いたか?」

最終章:なぜアサーションがあなたの秘密兵器なのか

アサーション

なぜアサーションを使うのですか?

なぜなら……

  • ステータスコードだけを信頼できないから
  • 静かな失敗を自動的にキャッチする必要があるから
  • リグレッションを早く検出したいから
  • 本を出しましょう:JSON を目視で確認するのは苦痛だから

EchoAPI がどのようにしてプロのようにアサーションを設定するのを助けるか

カスタムアサーションルールを設定する:

アサーションルール

成功または失敗のインスタントビジュアルフィードバックを得る:

アサーション結果

なぜアサーションが API のボディガードなのか

アサーションはあなたのAPIのX線メガネのようなものです。それらはキャッチします:

1. 緑色のステータスコードの背後に隠された静かな失敗

200 OK と表示されていても、ログインが成功したわけではありません。
アサーションを使って、error = falsedata != null、または code == 0 のような キーフィールドを検証 できます。

2. 大量テストを行っても頭を失わない

手動で50のAPIを実行するのは悪夢です。
アサーション + 自動化を使用すると:

  • バッチでテストを実行する
  • どのステップが失敗したのか、そしてなぜ失敗したのかがわかる
  • CI/CDに組み込み、物事が壊れた瞬間にアラートを受信する

3. 巧妙なフィールド名変更をキャッチする

バックエンドが静かに userNameusername にリネームしました。
200 に見え、成功の匂いがします——でもフロントエンドが壊れます。

✅ アサーションがキャッチします。
👀 他の人が泣いている間にあなたは笑います。

アサーション = API の火災報知器とウソ見抜き装置、すべて込み。

アサーションなし vs アサーションあり

機能 ステータスのみをチェック アサーションを使用する ✅
ビジネスロジックの失敗を検出する ❌ ノー ✅ ユープ
エラーを自動検出する ❌ 手動のみ ✅ 自動化
バッチテストを実行する ❌ 退屈 ✅ ワンクリック
フィールド名変更を検出する ❌ 見極める必要あり ✅ インスタントアラート
リリース前に検証する ❌ 最善を望む ✅ CI 承認

結論

ステータスコードはドアマン——ビルに入れたかどうかを教えてくれます。
エラーコードは受付嬢——アポイントメントが成功したかどうかを教えてくれます。
アサーションはボディガード——誰もウソをつかないようにします。

上記の画像のリンクは、ネットワークの問題のため解析に失敗しました。もし画像の解析が必要であれば、リンクの合法性和正しさを再度確認し、適宜再試行してみてください。上記の画像のリンクは、ネットワークの問題のため解析に失敗しました。もし画像の解析が必要であれば、リンクの合法性和正しさを再度確認し、適宜再試行してみてください。