Go HttpRouter路由套件hello world範例。
julienschmidt/httprouter
是Go語言的輕量HTTP request router套件,支援路徑參數,路徑pattern完全符合路由。Gin framework的router即基於httprouter。
範例環境:
- Go 1.18
- httprouter v1.3.0
安裝
在專案根目錄輸入go get github.com/julienschmidt/httprouter
取得httprouter。
~/../go-demo$ go get github.com/julienschmidt/httprouter
go: downloading github.com/julienschmidt/httprouter v1.3.0
go: added github.com/julienschmidt/httprouter v1.3.0
範例
下面使用httprouter建立API範例。GET|hello/:name
用httprouter.Params.ByName
取得路徑變數(path variable)name
。
Router.Get(path string, handle Handle)
的第二個參數為httprouter.Handle
函式用來處理請求,而Hello()
即為httprouter.Handle
的實作。
main.go
package main
import (
"fmt"
"net/http"
"github.com/julienschmidt/httprouter"
)
func main() {
router := httprouter.New()
router.GET("/hello/:name", Hello)
http.ListenAndServe(":8080", router)
}
func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
fmt.Fprintf(w, "hello, %s\n", ps.ByName("name"))
}
測試
在命令列以curl發出curl -X GET "http://localhost:8080/hello/john"
的回應如下。
$ curl -X GET "http://localhost:8080/hello/john"
hello, john
沒有留言:
張貼留言