HTTP2というプロトコルは、どんどん流行っているようになり、多くのユーザーに利用されています。それに伴って、HTTP2を採用しているAPIも多くなります。2017年以来、いろんなユーザーは、PostmanがHTTP2というプロトコルをサポートすることを期待しています。しかし、6年も経ていた今、PostmanはまだHTTP2をサポートしていません。本文では、HTTP2の基本情報を紹介した上、HTTP2のAPIをテストする方法を皆さんに紹介します。
HTTP2とは
HTTP2は、2015年に正式リリースされたHTTPの新しいバージョンです。HTTP1.1の問題点を改善するために設計されており、主に以下のような新機能を備えています。
まず、ヘッダー圧縮が実装されているため、通信のオーバーヘッドを大幅に削減できます。また、コネクションを多重化することで1つのTCPコネクション上で複数のデータストリームを同時に転送できるようになり、通信効率が向上します。そして、サーバープッシュによってサーバーがクライアントに必要と思われるデータをあらかじめ送信できるようになるため、クライアント側のデータ取得が迅速になります。
![http2](https://assets.apidog.com/blog-ja/2023/10/http2.png)
その一方で、HTTP1.1との後方互換性も維持されているので、すぐに新しいプロトコルに置き換えることはできませんが、主要なブラウザやWebサーバーで既にHTTP2への対応が進んでいるのが現状です。HTTPの高速化と通信効率の改善に寄与する新世代のプロトコルとして、徐々にその普及が進んでいくことが期待されています。
PostmanのHTTP2へのサポート
2017年以来、いろんなユーザーは、PostmanがHTTP2というプロトコルをサポートすることを期待しています。しかし、6年も経ていた今、PostmanはまだHTTP2をサポートしていません。
ソース:https://github.com/postmanlabs/postman-app-support/issues/2701
Postmanの現状として、HTTP2をサポートしていないので、HTTP2を採用しているAPIをテストすると、レスポンスで「Could not get response(レスポンスを取得できない)」というエラーが表示され、テストに失敗しています。
例えば、https://api.sandbox.push.apple.com/ はHTTP2を採用しているサーバーになります。
![http2のサーバー](https://assets.apidog.com/blog-ja/2023/10/http-2-site.png)
Postmanを使って、リクエストをこのサーバーに送信すると、レスポンスが取得できません。
![Postmanはhttp2に非対応](https://assets.apidog.com/blog-ja/2023/10/http2-postman.png)
それでは、HTTP2のAPIをテストするには、どうしたらいいですか?次は、Apidogというより包括的なAPIクライアントツールを使って、HTTP2のAPIを簡単にテストできる方法を皆さんに紹介します。
ApidogでHTTP2のAPIを簡単にテスト可能に
Apidogは、APIの設計、仕様書生成と共有、テスト及びAPIモックにも対応可能なAPIライフサイクリ管理ツールになります。Apidogの最新バージョンでは、HTTP2プロトコルへのサポートが開始されました。これにより、Apidogを使用して、いつものHTTP APIのようにHTTP2のAPIを簡単にテストすることが可能です。
ステップ⒈Apidogを開き、リクエストを新規に作成します。
ステップ⒉Apple Push Notification Service(Appleプッシュ通知サービス)の「https://api.sandbox.push.apple.com/」をエンドポイントのURLを送信すると、エラーが発生されずレスポンスを成功に取得できます。
![ApidogでHTTP2リクエストを送信](https://assets.apidog.com/blog-ja/2023/10/http-2-request-apidog.png)
また、「設定タブ」に切り替えて、HTTP2に対応するかどうかを指定するために、HTTPとHTTPSの接続方式を選択することも可能です。
![ApidogでHTTP2の設定](https://assets.apidog.com/blog-ja/2023/10/http-2-setting-apidog.png)
HTTPS接続方式の選択
HTTP/1.1
従来のようにHTTP/1.1という接続方式を選択すると、Apidogは、HTTP1.1及びそれ以前のプロトコルを採用するサーバーからレスポンスを取得できます。
HTTP/2 ALPN
HTTP/2 ALPNに切り替えると、ApidogはHTTP/2 ALPN(Application-Layer Protocol Negotiation)を使用して接続を確立します。まずはHTTP/2を使用して接続しますが、サーバーがHTTP/2をサポートしないことを検出した場合は、自動的にHTTP/1.1を使用します。こういう流れのおかげで、ApidogはAPIが利用しているHTTPプロトコルを自動的に判断できるので、いつものようにそうすれば、HTTP/2のAPIをテストしたりすることができます。
HTTP接続方式の選択
HTTP/1.1
HTTP接続方式をHTTP/1.1を指定すると、Apidogは、HTTP/1.1のみからレスポンスを取得できます。
HTTP/2 Prior Knowledge
HTTP接続はプレーンなTCP接続で行われるため、TLSハンドシェイク時に行われるALPNによるプロトコルネゴシエーションは利用できません。そこで、HTTP接続方式でHTTP/2を選択すると、Apidogは、HTTP/2を直接使用してh2c接続を確立します。サーバーがHTTP/2をサポートしていない場合は接続失敗になります。 HTTP/1.1は使用されません。
まとめ
Postmanは残念ながら現在もHTTP2に対応していませんが、Apidogを利用することでHTTP2のAPIも簡単にテストすることができます。ApidogのHTTP/2 ALPN接続では、サーバーのプロトコルを自動検知して最適な通信を実現します。設定でHTTP/2を直接指定することも可能です。APIテストツールとして、ApidogはPostmanに代わる強力な選択肢となります。