Web API などを利用するコードを書くとき、異常系の動作確認はどのようにしていますでしょうか。
サービス側でテスト用のエンドポイントが用意されているとよいのですが常にあるとは限りませんし、想定していないステータスコードもあるかもしれません。何よりレスポンスが遅い場合の確認などは難しいでしょう。そんな時に便利なサービス httpstat.us を紹介します。

httpstat.us とは
httpstat.usは、多様な HTTP Status Code をレスポンスしてくれるだけのシンプルなサービスです。
https://httpstat.us/200のように httpstat.us の URL に欲しいステータスコードの番号を付けてアクセスするだけで、そのステータスコードのレスポンスを返してくれます。https://httpstat.us/200なら200 OKのステータスコード。https://httpstat.us/404なら404 Not Found。
3桁の数字であれば001や999のように、Hypertext Transfer Protocol (HTTP) Status Code Registryに定義されていないコードも画面表示こそUnknown Codeですが、ステータスコードはしっかり返してくれます。
なお対応しているのは3桁のみで、2桁以下や4桁以上でリクエストするとナイスなティーポット画像が楽しめます。(ステータスコード418 I’m a teapot - HTTP | MDNのジョークにかけているのかな?https://httpstat.us/418は418 I'm a teapotと、あっさりな実装だから)
一応最後に “WE DON’T CAPTURE OR STORE ANY DATA ABOUT THE REQUESTS YOU MAKE.” とメッセージされていますが、大事なデータは送らないようにしましょう。
遅延応答
クエリーパラメーターsleepで、ミリ秒単位の遅延応答をリクエストできます。プログラム側のタイムアウトを先に起こさせたい場合などに使えます。(遅延なしでもレスポンスに2秒かかってる)
1 | $ SECONDS=0; curl https://httpstat.us/200; run_time=$SECONDS; echo -e "\n"$run_time |
JSON レスポンス
ヘッダーにAccept: application/jsonを付けると JSON でレスポンスを返してくれる、らしいのですが"200 OK"とダブルクォーテーションで囲ってくれるだけのようです。({ "status": 200, "message": "OK" }などを期待したかった)
1 | curl https://httpstat.us/200 |
簡単ながら HTTP Status Code をいろいろと試せるサービスの紹介でした。
実開発のテストに組み込むことはさすがにできないでしょうが、新しいライブラリの利用方法の確認だったり、エラーハンドリングの確認などを行う場合に便利です。
JSON レスポンスは期待値と異なるのでOSS-Friday 案件としてプルリクエストを出したいと思います。

