7章GoによるHTTP/1.1クライアントの実装

_images/ch07_header.jpg

Google Chromeの開発者ツールで見るJSON-RPC/XML-RPC

本章では5章と6章で説明してきた機能のいくつかをGoで表現します。本書でGoによって実装しているのは、APIサーバーにリクエストを送るクライアントを作成するための方法を伝えるという直接的な目的以外に、コードを使って理解を補強するという目的もあります。いくつかの機能はAPIクライアントとして利用する場面がなくても、5章、6章で説明してきた内容を再確認し、理解を補強できます。筆者もソフトウェア系の論文や難しいアルゴリズムを学ぶときは、それを実装したコードを併読したり、それを自分の得意な言語に移植することで理解を深めます。曖昧な理解ではコードを書けないので、実際に動かすことで理解が正しいかどうかを再確認できます。

4章ではテスト用のサーバーに対してリクエストを送るクライアント側のコードのみを紹介しましたが、HTTP/1.1ではクライアントから見たセマンティクス(通信内容や意味)は変わらなくても、シンタックス(通信のプロトコル)が変わっている部分が数多くあります。いくつかの項目では実際にクライアントをつないで動作確認できるように、まずサーバー側のコードを紹介しています。

7.1 Keep-Alive

GoのHTTP APIは、何も設定しなくても標準でKeep-Aliveが有効になっています。正しく通信が完了した後も、セッションが維持されるようになっています。ただし、そのためにはクライアントコード側で必ず ...