API開発ツールキット:デバッグを速く、リリースを早く
JWTデバッグ、HTTPステータスコード、JSONフォーマット、Base64エンコード、URLエンコード — API開発者のための必須ブラウザツール。
午後3時、APIが401を返している。トークンは有効に見える。エンドポイントは正しい。リクエストヘッダーも問題なさそう。
JWTをデコーダーに貼り付けると、問題が即座にわかった:expクレームが12分前に期限切れになっている。トークンリフレッシュロジックにバグがあるんだ。
5秒のデコードが、コードを見つめて過ごしたであろう1時間を節約してくれた。
JWTデバッグは日常業務
モダンなAPIを扱っているなら、JWTは常に関わってきます。ログイントークン、サービス間認証、OAuthフロー — どこにでもあります。
問題は、JWTが意味不明な文字列に見えること:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
どんなクレームがある?いつ期限切れ?どのアルゴリズムで署名された?見ただけではわかりません。
トークンを貼り付ければ、ヘッダー、ペイロード、有効期限が即座に表示されます。ライブラリのインストール不要。コードを書く必要なし。答えだけ。
HTTPステータスコード:200と404の先へ
すぐに答えて — 401と403の違いは?502と503は?409を使うべきとき、422を使うべきときは?
ほとんどの開発者は一般的なものは知っていますが、APIは何十種類もの異なるステータスコードを返します。予期しない429や紛らわしい307を受け取ったとき、正確な意味を知る必要があります。
HTTPステータスコードリファレンスが各コードの意味、使用すべき場面、一般的な原因を教えてくれます。Google検索より速く、Stack Overflowの議論を読み漁る必要もありません。
JSONフォーマットは必須
APIはJSONを送受信します。そしてほとんどの場合、そのJSONは空白のない1行の圧縮された状態で届きます。
{"users":[{"id":1,"name":"Alice","roles":["admin","editor"],"settings":{"theme":"dark","notifications":{"email":true,"push":false}}}]}
ここから抜けているカンマを見つけてみてください。ネストされたフィールドの存在確認も。2つのレスポンスの比較も。
圧縮されたJSONを貼り付ければ、適切なインデントでフォーマットされます。これで実際に読めるようになり、エラーを発見し、構造を比較できます。
Base64:認証ヘッダーの秘密
API認証にはBase64エンコードがよく関わります。Basic Authヘッダーはusername:passwordをBase64エンコードしたもの。JSONペイロード内のバイナリデータもBase64エンコード。証明書の内容、Webhookシグネチャ、暗号化された値 — すべてBase64です。
何かが動かないとき、実際に何が送信されているかをデコードする必要があります。またはテスト用に新しい値をエンコードする必要があります。
Base64エンコーダー/デコーダーが双方向で即座に処理します。エンコードされた文字列を貼り付ければ元の値が見える。新しい値を入力すればエンコードされたバージョンが得られる。
よくあるデバッグシナリオ:Basic Authヘッダーが失敗する。デコードしてみたらパスワードに末尾の改行文字が含まれていた。コードで発見するにはもっと時間がかかったでしょう。
URLエンコードは厄介になる
特殊文字を含むクエリパラメータにはURLエンコードが必要です。スペースは%20(または+)に。アンパサンドは%26に。スラッシュは%2Fに。
これが重要な場面:
- ユーザー入力を含む検索エンドポイントを構築するとき
- クエリパラメータにURL自体が含まれるとき(コールバックURL、リダイレクトURI)
- パラメータが正しくパースされない理由をデバッグするとき
- APIキーに特殊文字が含まれるとき
URLエンコーダー/デコーダーがエンコード/デコードされたバージョンがどう見えるかを正確に示します。特にOAuthコールバックURL(URL内にURLがあり、二重エンコードで読めなくなりがち)のデバッグに便利です。
実際のデバッグワークフロー
これらのツールが実際のAPIデバッグセッションでどう使われるか:
- リクエスト失敗 — HTTPステータスコードの意味を確認
- 認証の問題? — JWTをデコードしてクレームと有効期限を確認
- ペイロードの問題? — JSONをフォーマットして構造を検査
- ヘッダーの問題? — Base64認証ヘッダーをデコード
- URLパース? — URLをデコードしてパラメータエンコードを確認
各ステップは数秒。代替手段 — 使い捨てスクリプトの作成、CLIツールのインストール、ドキュメントを漁ること — は数分から数時間かかります。
常にタブを開いておく
これらのツールをブラウザのピン留めタブに入れています。PythonでBase64エンコードできないからではありません。できます。でもターミナルにコンテキストスイッチして、簡単なスクリプトを書いて、実行するのはデバッグの流れを中断します。
これらのツールはデバッグ速度そのもの。貼り付けて、結果を見て、問題を理解して、コードを修正。最速のデバッグサイクルです。
API開発は50%がコードを書くこと、50%が書いたコードが期待通りに動かない理由を解明すること。適切なブラウザツールはIDEやデバッガーを置き換えるものではありません — 「解明する」部分を速くすることで補完してくれます。