2022.07.26  

【Go】簡単なhttpサーバーを立ち上げる

Go    

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サーバーを導入できました。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信