Goで簡単なhttpサーバーを作成します。
今回のコードは下記講座を参考にさせていただきました。
次のコードをコピペして実行するとhttpサーバーが立ち上がります。
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
type Page struct {
Title string
Body []byte
}
func main() {
// webページに表示するテキストを設定
p1 := &Page{Title: "sample", Body: []byte("This is a sample Page.")}
p1.save()
// ListenAndServeの前にHandleFuncを定義するとURLのハンドリングができる
http.HandleFunc("/view/", viewHandler)
// httpサーバーの起動。log.Fatalの中で処理を実行することでサーバーエラーの際に処理が終了するようになる
log.Fatal(http.ListenAndServe(":8080", nil))
}
// HandleFuncの第二引数にはfucn(w http.ResponseWriter, r *http.Request)を渡すのが決まり
func viewHandler(w http.ResponseWriter, r *http.Request) {
// /view/<文字列>の<文字列>部分を読み込む
title := r.URL.Path[len("/view/"):]
p, _ := loadPage(title)
fmt.Fprintf(w, "<h1>%s</h1><div>%s</div>", p.Title, p.Body)
}
// データの保存(DBの代わりのテキストファイルを生成)
func (p *Page) save() error {
filename := p.Title + ".txt"
return ioutil.WriteFile(filename, p.Body, 0600)
}
// データの読み込み(saveで保存してデータの読み込み)
func loadPage(title string) (*Page, error) {
filename := title + ".txt"
body, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
return &Page{Title: title, Body: body}, nil
}
その状態でhttp://localhost:8080/view/sample
にアクセスすると次のようなページが表示されることを確認できます。
これでGo言語でhttpサーバーを導入できました。