IntelliJ IDEAコードエディターのHTTPクライアントで書いたリクエストをhttpbinでデバッグする

2019.11.30

IntelliJ IDEAコードエディターのHTTPクライアントとは

HTTPクライアントはIntelliJ IDEA Ultimateで利用可能な機能です。 ざっくり言うと下記のような機能が含まれています。

  • HTTPリクエストを作成、編集、実行できる
  • リクエストの詳細を変数化でき、変数をファイルで定義できる
  • レスポンスに対する応答ハンドラスクリプトを記述できる

基本的な使い方は公式ドキュメントがわかりやすいです。

httpbinでデバッグする

公式ドキュメントはわかりやすいのですが、コードを書いてみると実際にどんなリクエストが送信されているのか確認したくなりました。 そこでhttpbinと組み合わせてデバッグをする方法を考えてみました。

デバッグ用の環境を作成する

まず、環境ファイルに以下のように実際のAPIを向く環境とhttpbinを向くデバッグ用の環境を作成します。 /anything へ向けることでどのようなパス、メソッドのリクエストに対してもリクエスト情報を返してくれるようになります。

{
  "develop": {
    "endpoint": "https://localhost:8080",
    "user": "user",
    "password": "password"
  },
  "debug": {
    "endpoint": "https://httpbin.org/anything",
    "user": "user",
    "password": "password"
  }
}

実行例

上記の設定で次のリクエストを実行します。 URLや認証情報を変数化しているので、環境を切り替えるだけで実環境とデバッグを変更できます。

POST {{endpoint}}/birds
Content-Type: application/json
Authorization: Basic {{user}} {{password}}

{
  "name": "Pyrrhura molinae",
  "color": "pineapple"
}

httpbinを向いているdebug環境で実行した場合結果は以下のようになり、ヘッダーやボディに指定されている値が確認できます。

POST https://httpbin.org/anything/birds

HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-Type: application/json
Date: Sat, 30 Nov 2019 12:43:01 GMT
Referrer-Policy: no-referrer-when-downgrade
Server: nginx
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Connection: keep-alive

{
  "args": {},
  "data": "{\n  \"name\": \"Pyrrhura molinae\",\n  \"color\": \"pineapple\"\n}",
  "files": {},
  "form": {},
  "headers": {
    "Accept-Encoding": "gzip,deflate",
    "Authorization": "Basic dXNlcjpwYXNzd29yZA==",
    "Content-Length": "56",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "Apache-HttpClient/4.5.9 (Java/1.8.0_131)"
  },
  "json": {
    "color": "pineapple",
    "name": "Pyrrhura molinae"
  },
  "method": "POST",
  "origin": "210.155.31.19, 210.155.31.19",
  "url": "https://httpbin.org/anything/birds"
}


Response code: 200 (OK); Time: 931ms; Content length: 592 bytes

まとめ

環境ファイルとhttpbinを組み合わせることでHTTPリクエストの確認が容易になります。