10章HTTPサーバー

Goは標準ライブラリの net/http パッケージにHTTPサーバー、HTTPクライアントが組み込まれています。このうちHTTPサーバーは、サードパーティーが提供するライブラリを利用しなくても net/http パッケージを用いて業務の本番環境で稼働できるようなサーバーアプリケーションを実装できます。

Goの特徴として、ゴルーチンやチャネルを用いた並行処理がありますが、net/http パッケージはGoの並行処理の恩恵を受けているパッケージの1つです。パッケージ内部ではゴルーチンやチャネルを利用しており、クライアントからのHTTPリクエストを受け取るたびに net/http パッケージの内部でクライアントとのコネクションを生成し、生成したコネクションを使って通信します。それぞれのコネクションごとに並行して処理できる仕組みになっています。同時に net/http パッケージが提供するHTTPサーバーはゴルーチンセーフなので、複数のリクエストを安全かつ並列に処理できます。

note

HTTPのプロトコルそのものの説明は『Real World HTTP 第2版』(渋川 よしき 著、オライリー・ジャパン、2020年)などの書籍を参照してください。