Go言語でhttpサーバーを立ち上げる
Go言語でHTTP通信をするには、net/httpパッケージを使用します。
package main import ( "io" "net/http" ) func infoHandler(w http.ResponseWriter, r *http.Request) { // HTML テキストをhttp.ResponseWriteへ io.WriteString(w, ` <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>hello</title> </head> <body> <h1>Hello World</h1> </body></html> `) } func main() { // /hello にアクセスした際に処理するハンドラーを登録 http.HandleFunc("/hello", infoHandler) // サーバーをポート8080で起動 http.ListenAndServe(":8080", nil) }
ハンドラ関数の定義
HTTPリクエスト発生時に呼び出される具体的な処理が書かれています。(infoHandler関数) ハンドラ関数は、必ず以下形で定義します。
func 関数名(w http.ResponseWriter, r *http.Request) { // 実行する処理 }
http.ResponseWriterインタフェース
ハンドラ関数の第一引数には、http.ResponseWriterインタフェース型のオブジェクトが渡されます。 このオブジェクトはHTTPレスポンスヘッダへの値セットや、HTTPレスポンスボディへの出力に使用します。
ioパッケージ
基本的な入出力のための型とインターフェイスがまとめられたパッケージ。
WriteString関数
func WriteString(w Writer, s string) (n int, err os.Error)
WriteStringは、wに文字列sの内容を書きこみます。
ハンドラ関数の登録
main関数内でhttp.HandlerFunc関数を使用することで、 アクセスパスとハンドラ関数を結びつけています。
http.HandleFunc("/hello", infoHandler)
サーバの起動
全てのハンドラ関数の登録が完了したら、サーバの起動を行います。
http.ListenAndServe(":8080", nil)
プログラムを実行するには?
基本的には、go run hoge.goもしくはgo build hoge hoge.go | ./hogeとすることで実行することができます。
go build
goはコンパイル型言語なので、CやJavaのように基本的にはコンパイルする必要があります。
go build [コンパイル後のファイル名] [コンパイルしたいファイル名]
./[コンパイル後のファイル名]
で実行します。
go run
自動的にコンパイル・実行してくれる便利なコマンド。
go run ファイル名
コンパイルして実行せずに実行できます。