【发布时间】:2015-02-26 22:54:53
【问题描述】:
我正在使用 Gorilla Mux 来处理我的 REST API 的 HTTP 路由。我正在为我的 API 使用以下绑定:
r := mux.NewRouter()
r.Host(baseUrl)
api := r.PathPrefix("/api").Subrouter()
api.HandleFunc("/users", APIUsers).Methods("GET", "POST")
http.Handle("/", r)
http.ListenAndServe(":8083", nil)
然后我做一个这样的 CURL:
$ curl -i -X PUT http://127.0.0.1:8083/api/users
没有像预期的那样调用方法APIUsers。我确实收到了200 OK 回复:
HTTP/1.1 200 OK
Date: Tue, 30 Dec 2014 19:03:59 GMT
Content-Length: 0
Content-Type: text/plain; charset=utf-8
我是否应该对 Gorilla 采取不同的做法,比如将所有失败的函数绑定到指定函数?另外我想知道在不受支持的函数上返回的典型 HTTP 代码是什么。我假设400 范围内的代码,但我不确定使用哪个。我不希望它是200 tho,因为请求不是“OK”。
关于这个主题的任何想法和提示?
【问题讨论】:
-
你应该得到一个 404。当路由不匹配时,mux 设置为使用
http.NotFoundHandler()。您是否为Router指定了 NotFoundHandler?