golangでシンプルなWebサーバを立ててみる

golangでシンプルなWebサーバを立ててみる

こんにちは。七色メガネです。

今回は、GOlangを使用して簡単なWebサーバを立てることに挑戦してみます。

今回やること

サーバを作成し、localhost の 8080 番ポートに対して listen させ、そこにアクセスした人に対してindex.htmlを返却させる。

準備

  1. GOlangをインストールしておきましょう。
  2. 次のようなディレクトリを作成しておきます。
    (任意の場所)/0303_serverTest/src
    (任意の場所)/0303_serverTest/doc

実装

サーバー側の実装

サーバ側のプログラムは “webserver.go” という名称で、(任意の場所)/0303_serverTest/src/ に格納します。

コード量は多くありません。次のように十数行のコードで実装できます。

http.HandleFunc

HandleFunc 関数は、URLパターンとハンドラを受け取り、ハンドラを与えられたURLパターンに対するDefaultServeMuxとして登録します。

今回はURLパスとして “/” を、ハンドラとして無名関数を渡しています。

http.ServeFile

ServeFile 関数は、リクエストに対してコンテンツファイルあるいはコンテンツディレクトリを返却します。

今回は index.html を格納したパスを定義した docDir を第3引数に渡しているため、その場所に存在するファイルをレスポンスとして返却します。

http.ListenAndServe

ListenAndServe 関数はTCPネットワークのアドレスをlistenし、指定したハンドラを利用してレレスポンスをServeします。Handle部分はnilでも問題なく、その場合はDefaultServeMuxが使用されます。

今回はlocalhostの8080番を使用するのでアドレス部には “:8080” を、ハンドラはHandleFuncによりDefaultServeMuxに登録されているので、 nil を渡しています。

log.Fatal

Fatal 関数は、エラーがおきた際、エラーに関する情報を出力した後に処理を終了させます。

html の実装

次に、サーバにリクエストが在った際にサーブされるhtmlドキュメントを用意します。

今回はテストなので内容はなんでも構いません。

先ほど作成した (任意の場所)/0303_serverTest/doc の下に “index.html” という名前で作成します。

起動

これで準備はできました。早速、作成したサーバを起動させてリクエストを投げてみましょう。

以下のコマンドで、GOプログラムのビルドと起動を行います。

次にブラウザから localhost の 8080 番にアクセスしてみます。

作成したサーバから、指定ファイルがサーブされたことが確認できました。

 

まとめ

  • golang の net/http ライブラリを使用することで、簡単にサーバが構築できる。

参考

https://golang.org/pkg/net/http/

https://medium.com/@Akitsuyoshi/go%E8%A8%80%E8%AA%9E%E3%81%A7%E4%BD%9C%E3%82%8B%E7%B0%A1%E5%8D%98%E3%81%AAweb-server-9218785132c8

https://liginc.co.jp/333868

 

golangカテゴリの最新記事