前回書いた記事の中でオレオレroutingを実装する際に標準の net/http パッケージだけだと足りないと書いてましたがこれ、間違いでした。
標準の net/http パッケージだけでオレオレroutingを実装する方法は以下
main.go
package main import ( "gothub/handler" "fmt" "net/http" "github.com/labstack/gommon/log" ) const port = "8080" func main() { router := http.NewServeMux() router.HandleFunc("/", handler.Top) if err := http.ListenAndServe(fmt.Sprintf(":%s", port), router); err != nil { log.Fatal("err: %v", err) } }
handler/handler.go
pakage handler import ( "net/http" ) func Top(w http.ResponseWriter, r *httpRequest){ // serverの処理 }
router := http.NewServeMux() で HTTP Request multiplexer をインスタンス化し、routerとして扱う。
http requestをhandleしたいroutingのメソッドには http.ResponseWriter と http.Request を引数に与える。
routingのライブラリを使うことなく、標準のHTTPパッケージだけでもやりたかった、超薄いAPIを作るということは可能でした。
(golangのhttpパッケージすげぇ強力だなぁ(小並感))