如何解决r.Handle的参数中的http.Handler值:缺少方法ServeHTTP错误
我试图在Go中使用大猩猩mux构建基本的Web API。这是我的代码。请帮助我了解一些界面在这里的工作方式。
func main() {
r := mux.NewRouter()
r.Handle("/",http.FileServer(http.Dir("./views/")))
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/",http.FileServer(http.Dir("./static/"))))
r.Handle("/status",myHandler).Methods("GET")
http.ListenAndServe(":8080",r)
}
func myHandler(w http.ResponseWriter,r *http.Request) {
w.WriteHeader(http.StatusOK)
} ```
error :- `cannot use myHandler (value of type func(w http.ResponseWriter,r *http.Request)) as http.Handler value in argument to r.Handle: missing method ServeHTTP `
解决方法
如docs for mux.Router.Handle所示,它需要一个http.Handler。这是具有单个方法的接口:ServeHTTP(ResponseWriter,*Request)
。
如果要将对象作为处理程序传递,这将很有用。
要注册功能myHandler
,请改用mux.Router.HandleFunc:
r.HandleFunc("/status",myHandler)
这也显示在mux软件包的基本examples中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。