Go/HTTP

出典: フリー教科書『ウィキブックス(Wikibooks)』
< Go
ナビゲーションに移動 検索に移動

HTTP[編集]

Goのパッケージ net/http は http プロトコルのクライアントとサーバーの機能を提供します。

サーバ側のコード例
package main

import (
        "fmt"
        "log"
        "net/http"
)

func main() {
        http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
                fmt.Fprintf(w, `
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Go Web server</title>
  </head>
  <body>
    <h1>このウェブサービスはGoで走っています。</h1>
     %v
     <p><a href="/link">/link</a></p>
  </body>
</html>
`, r)
        })
        http.HandleFunc("/link", func(w http.ResponseWriter, r *http.Request) {
                fmt.Fprintf(w, `
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Go Web server</title>
  </head>
  <body>
    <h1>リンク先</h1>
     %v
     <p><a href="/">TOP</a></p>
  </body>
</html>
`, r)
        })
        log.Fatal(http.ListenAndServe(":8080", nil))
}
http.HandleFuncの第二引数に匿名関数を使いました
バッククォートで囲まれた文字列はバッククオート以外のすべての文字がエスケープされないので複数行のHTMLを埋めこむのに便利です