サーバーログからURLを取り出すと、こんな見た目になっています。https://example.com/search?q=hello%20world&redirect=https%3A%2F%2Fother.com%2Fpath。クエリパラメータを読みたいのに、パーセントエンコーディングのせいで一目で理解するのはほぼ不可能です。そこでブラウザツールに貼り付けてデコードし、結果を読み、何かをテストするために修正版を再エンコードします。本来些細な作業のはずが、ウェブサイトへの往復が2回発生します。
URLエンコーディングは、開発者が常に扱いながらもほとんど意識しないものの1つです——リダイレクトが壊れたり、クエリ文字列が不正な形式になったり、二重にエンコードされたパラメータによって、5分の作業が1時間のデバッグセッションに変わるまでは。
URLエンコーディングが実際に問題を引き起こすとき
二重エンコーディングは典型的な罠です。URLがアプリケーションで一度エンコードされ、さらにミドルウェア層で再度エンコードされると、%20が%2520になってしまいます。これを診断するには、URLを段階的にデコードして、どこで余分なエンコーディングが紛れ込んだかを正確に把握する必要があります。ターミナルでpython3 -c "import urllib.parse; print(urllib.parse.unquote('...'))"を使えば動作はしますが、長いURLに対しては遅く、ミスも起こりやすくなります。
エンコーディングのミスは、OAuthフローやウェブフックURL、リダイレクトURIが完全に一致する必要があるAPIコールバックも壊してしまいます。素早くエンコード・デコードできれば、アプリが送信する内容とサーバーが期待する内容を比較できます。
URLを即座にエンコード・デコード
Bellowsには、41個の開発者ツールの1つとしてURLエンコーダー/デコーダーが含まれています。エンコードされたURLを貼り付ければ読みやすいバージョンが表示され、平文のURLを入力すれば適切にエンコードされた出力が得られます。ワンクリックでエンコードとデコードを切り替えられ、結果はリアルタイムで更新されます。
リダイレクトのデバッグ
OAuthやSSOのフローでは、リダイレクトURIがURLエンコードされたクエリパラメータとして渡されます。リダイレクトが失敗したとき、最初のステップはURLをデコードして、対象が登録済みのコールバックと一致しているかを確認することです。ローカルツールがあれば、IDEを離れることも、機密性のある可能性のあるコールバックURLを公開ウェブサイトに貼り付けることもなく、これを行えます。
クエリ文字列を扱う
複雑なフィルターや検索クエリをURLパラメータで受け取るAPIでは、&や=、+、スペースといった特殊文字を注意深くエンコードする必要があることが多くあります。専用のエンコーダーを使えば、特定の文脈でどの文字をエスケープすべきか推測することなく、正しい出力が得られます。