🔩 ねじき教室 Go と Web の教室

Part 3

Web サーバーを書く

30秒でつかむ 受け取り、処理し、返すサーバーを作る
受け取り、処理し、返すサーバーを作るGoのサーバーがHTTPリクエストを受け取り、ハンドラで処理し、レスポンスを返します。1リクエスト受け取る2ハンドラ処理する3レスポンス返す
  1. リクエスト 受け取る
  2. ハンドラ 処理する
  3. レスポンス 返す

Part 2 で見た「リクエストを受け取ってレスポンスを返す」を、今度は自分の手で実装します。 まず標準ライブラリ net/http だけで書き、仕組みを理解してから、ISUCON の初期実装でよく使われるフレームワーク echo に進みます。 この Part はブラウザだけで進められます。ページ内の REST クライアントから、自分で書いたサーバーへリクエストを送ります。

この Part の所要時間は 3〜5 時間が目安です。 終えると、Go で HTTP リクエストを受け取り、パスやメソッドに応じたレスポンスを返せます。 手元の Go とターミナルは、ページ内で学んだコードを自分の環境でも動かしたくなった段階で使います。

  1. 最小の Web サーバー net/http で最小の Web サーバーを書き、ページ内の REST クライアントからリクエストを送ります。
  2. ルーティングとハンドラ http.ServeMux で複数のパスを捌き、ハンドラの 2 つの引数と http.Handler インターフェースの正体を読み解きます。
  3. リクエストを受け取る パスパラメータ、クエリ文字列、ボディの 3 経路でクライアントからデータを受け取り、検証して 400 を返す判断を身につけます。
  4. レスポンスを返す ステータスコードとヘッダーの書き方を押さえ、JSON を返す API と html/template で HTML を返すページを実装します。
  5. ミドルウェア ハンドラを受け取ってハンドラを返す関数というパターンで、全ハンドラ共通の処理を 1 箇所に書く方法を学びます。
  6. フレームワーク echo ここまでの標準ライブラリの知識がそのまま通用することを、echo で同じアプリを書き直して確かめます。