いまさらな感じですがHello Worldサーバーをhttp.ServeMux使ってやる方法で書いてみた。
package main import ( "flag" "fmt" "log" "net/http" ) type BaseHandler struct { Name string } func (bh *BaseHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { if bh.Name != "" { fmt.Fprint(w, "Hey "+bh.Name+"!") } else { fmt.Fprint(w, "Hey World!") } } var name string func init() { flag.StringVar(&name, "name", "", "your name") flag.Parse() } func main() { mux := http.NewServeMux() bh := &BaseHandler{Name: name} mux.Handle("/hello", bh) addr := fmt.Sprintf(":%d", 8080) err := http.ListenAndServe(addr, mux) if err != nil { log.Fatal(err) } }
http.ServeMux使ったほうがグローバル変数使ってパラメータ渡すようなことしなくて済むので依存関係少なめのコードがかけてオススメ
具体的に、DocumentRoot的なものを設定してそこからファイル渡すときなどはこれが便利な印象。
- http - The Go Programming Language
- A Recap of Request Handling in Go
- Custom Handlers and Avoiding Globals in Go Web Applications · go, web, go
- Patterns for scalable web services in Go
- net/http の動きを少しだけ追ってみた - Golang · m0t0k1ch1st0ry
井口裕香 /「Hey World」<初回限定盤> CD+DVD (2枚組) TVアニメ「ダンジョンに出会いを求めるのは間違っているだろうか」オープニングテーマ
- アーティスト: 井口裕香
- 出版社/メーカー: ワーナー・ホーム・ビデオ
- 発売日: 2015/04/29
- メディア: CD
- この商品を含むブログ (4件) を見る