我試圖找出在Go中處理對/
和/
的請求並以不同方式處理不同方法的最佳方法。這裏是我所想到的最好的:如何處理Go中不同方法的http請求?
package main
import (
"fmt"
"html"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
if r.Method == "GET" {
fmt.Fprintf(w, "GET, %q", html.EscapeString(r.URL.Path))
} else if r.Method == "POST" {
fmt.Fprintf(w, "POST, %q", html.EscapeString(r.URL.Path))
} else {
http.Error(w, "Invalid request method.", 405)
}
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
這是否是慣用的Go?這是最好的,我可以用標準的http lib做什麼?我寧願做一些像http.HandleGet("/", handler)
這樣的快遞或Sinatra。編寫簡單的REST服務有沒有一個好的框架? web.go看起來很有吸引力,但似乎停滯不前。
謝謝您的建議。
如果您只是在尋找路由抽象,您可能會對http://www.gorillatoolkit.org/pkg/mux感興趣。 – dskinner 2013-03-06 07:36:32
+1。 mux或http://www.gorillatoolkit.org/pkg/pat非常適合抽象。 – minikomi 2013-03-06 08:12:36