小编Leo*_*ins的帖子

Gorilla Mux 子路由方法 POST 请求触发 GET

我正在尝试使用 Gorilla Mux 在 Go 中开发一个简单的 REST API。

我有main.go,它注册了上面的简单路径并启动服务器以侦听端口 3000。

func main() {
    router := mux.NewRouter().StrictSlash(true)
    sub := router.PathPrefix("/api/v1").Subrouter()
    handlers.RegisterRoutes(sub)

    log.Fatal(http.ListenAndServe(":3000", router))
}
Run Code Online (Sandbox Code Playgroud)

另一个通用handlers.go文件中的基本处理程序注册方法

func RegisterRoutes(sub *mux.Router) {
    user.RegisterRoutes(sub)
}
Run Code Online (Sandbox Code Playgroud)

还有user.handler.go文件,它注册了“/user”子路由:

func RegisterRoutes(sub *mux.Router) {
    userRoutes := sub.StrictSlash(true).Path("/users").Subrouter()

    userRoutes.Methods("POST").HandlerFunc(getUsers)
    userRoutes.Methods("GET").HandlerFunc(getUsers)
}

func getUsers(w http.ResponseWriter, r *http.Request) {
    user := User{Name: "test", Password: "test"}

    fmt.Printf("%+v\n", r.Method)

    json.NewEncoder(w).Encode(user)
}
Run Code Online (Sandbox Code Playgroud)

我正在测试我在上面设置的路径,并提出了一个奇怪的行为:

测试 - GET - localhost:3000/api/v1/users => 在控制台打印 GET。(如预期)
测试 - GET - localhost:3000/api/v1/users/ => 在控制台中打印 GET。(如预期) …

go gorilla

5
推荐指数
1
解决办法
1045
查看次数

标签 统计

go ×1

gorilla ×1