最新ガイド:HTTP/2リクエストの実装

近年、新しい技術として、HTTP2を採用しているAPIがどんどん増えています。本文では、HTTP/2という技術の基本情報を紹介した上、HTTP/2リクエストを実装する方法を詳しく解説していきたいと思います。

中村 拓也

中村 拓也

12 5月 2025

最新ガイド:HTTP/2リクエストの実装

近年、新しい技術として、HTTP2を採用しているAPIがどんどん増えています。本文では、HTTP/2という技術の基本情報を紹介した上、HTTP/2リクエストを実装する方法を詳しく解説していきたいと思います。

また、HTTP/2 に完璧に対応可能なAPIテストツールのApidogを使用して、簡単にHTTP/2リクエストを実装する方法をも一緒に紹介します。

button

HTTP/2リクエストとは

HTTP2リクエストは、このHTTP2の機能を使って送信されるリクエストのことを指します。HTTP/2は、ヘッダ圧縮やストリーム転送により、HTTP1.1のリクエストよりも高速で効率的に行うことができます。

HTTP/2リクエストへの理解を深めるために、HTTP/2というプロトコルをまず知っておく必要がありますので、次はHTTP/2プロトコルについても紹介します。

HTTP/2プロトコルについて

HTTP/2 は、HTTPネットワークプロトコルの2番目のメジャーバージョンとして、HTTP 1.1の後継として知られていることが多くなります。HTTP/2はInternet Engineering Task Force (IETF) によって開発され、2015 年 5 月に承認されました。HTTP/2 の主な目的は、待ち時間を短縮し、クライアントとサーバー間のデータ送信方法を最適化することで、Web サイトと Web アプリケーションのパフォーマンスを向上させることです。この目標を踏まえて、HTTP2は次のような特徴があります。

HTTP/2プロトコル

このように、HTTP/2では接続効率、転送効率、優先制御などが向上し、通信速度が大幅に高速化されています。Webアプリケーションの高速化に有効な新しいプロトコルといえます。

HTTP/2のストリームについて

HTTP/2は、Googleのアプリケーションレイヤープロトコル「SPDY」をベースとするプロトコルで、複雑なWebサイトでもWebブラウザが画像やテキストを高速に表示できるようリクエストを行えるようにします。また、HTTP/1.1ではリクエストは1つずつ処理するが、HTTP/2は単一の接続で複数のストリームを同時に処理できるようになります。

http1.1 http2リクエストとレスポンスのパターン

(https://www.itmedia.co.jp/news/articles/2310/11/news082.htmlより参照)

HTTP2でのストリームは、次のような特徴を有しています:

HTTP2のストリーム

このように、HTTP/2のストリームは効率的な通信と柔軟な制御を実現するためのコアとなる技術です。

HTTP/2の脆弱性

HTTP/2は、従来のプロトコルより効率的な通信と柔軟な制御を実現していますが、いくつかの脆弱性も存在しています。次は、多くの業者に多く取り上げられる脆弱性を皆さんに紹介します。

HPACK圧縮アルゴリズムの脆弱性

サーバープッシュの悪用

ストリームの優先制御

同一コネクションのストリーム競合

TLSに対する依存度が高い

これらの脆弱性により、サーバー攻撃を受ける可能性があります。ITmediaのニュースによりますと、米Google、米Cloudflare、米Amazonは10月10日(現地時間)、新たに発見された「HTTP/2」プロトコルに関連する脆弱性により、8月に最大規模のDDoS(分散型サービス妨害)攻撃を検知していたと発表しました。

ApidogでHTTP/2リクエストを実装する方法

上記の情報から、プロトコルを選択する際に、サービス内容と要件に応じて、HTTP1.1とHTTP2のどちらにするかを決める必要があります。しかも現在、HTTP2は主流のプロトコルとは言えませんので、PostmanなどのAPIテストツールもHTTP2プロトコルをサポートしていないこともあります。それでは、もしHTTP2を採用しているAPIをテストするために、どうしたらいいですか?次は、Apidogというツールを使ってHTTP/2リクエストを簡単に実装する方法を紹介します。

button

Apidogは、APIの設計、仕様書生成と共有、テスト及びAPIモックにも対応可能なAPIライフサイクリ管理ツールです。Apidogは、HTTP1へのサポートはもちろん、最新バージョンではHTTP2プロトコルへのサポートが開始されました。これにより、Apidogを使用して、いつものようにHTTP2リクエストを実装することが可能です。

ステップ⒈Apidogを開き、リクエストを新規に作成します。

ステップ⒉Apple Push Notification Service(Appleプッシュ通知サービス)の「https://api.sandbox.push.apple.com/」をエンドポイントのURLを送信すると、エラーが発生されずレスポンスを成功に取得できます。

ApidogでHTTP2リクエストを送信

また、「設定タブ」に切り替えて、HTTP2に対応するかどうかを指定するために、HTTPとHTTPSの接続方式を選択することも可能です。

ApidogでHTTP2の設定
button

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は使用されません。

まとめ

この記事では、最近注目されているHTTP/2プロトコルについて解説しています。HTTP/2はHTTP/1.1の高速化を目的としており、マルチプレクシング、ヘッダ圧縮などの機能を持っています。HTTP/2では1つのTCPコネクション上で複数のストリームを使って通信することができ、ストリームは効率的な通信と制御を実現する論理的な通信チャネルです。ただし、HTTP/2にはいくつかの脆弱性もあるため、攻撃に悪用される可能性に注意が必要です。

また、HTTP/2リクエストを実装する方法として、Apidogなどのツールを利用することで実現することができます。Apidogは、HTTP1.1と2にも完璧に互換できるので、簡単にHTTP/2のAPIをテストすることができます。

button

Explore more

n8n徹底解説:初心者でもできるローカル自動化

n8n徹底解説:初心者でもできるローカル自動化

n8nは柔軟で簡単な自動化ツール。Dockerで手軽にローカル実行でき、ITプロや初心者もAIワークフロー構築を楽しめます。

10 6月 2025

Pythonで簡単!APIデータ抽出と自動データパイプラインの作り方

Pythonで簡単!APIデータ抽出と自動データパイプラインの作り方

PythonでAPIからデータ抽出ができれば、堅牢なデータパイプライン構築が可能です。認証やエラー処理も押さえ、自動化されたプロセスを実現できます。

7 6月 2025

MindsDB: あらゆるITユーザーのための万能MCPサーバー

MindsDB: あらゆるITユーザーのための万能MCPサーバー

MindsDBは、200以上のデータソースへの接続を容易にし、AIアプリの構築やインサイトの探索をプロのように実現します。さらなるデータソースの接続や、APIdogでのAPIドキュメント化をお試しください。

26 5月 2025

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる