仅使用标准库的Golang中间件
我的第一个stackoverflow问题,所以请不要太在意我关于stackoverflow的幼稚和问题,golang初学者 我想知道这两个调用之间的区别,以及对仅使用标准库的Golang中间件,go,Go,我的第一个stackoverflow问题,所以请不要太在意我关于stackoverflow的幼稚和问题,golang初学者 我想知道这两个调用之间的区别,以及对Handle,HandleFunc,HandleFunc的简单理解 http.Handle(“/profile”,记录器(profilefunc)) http.HandleFunc(“/”,HomeFunc) 根据我在Go文档示例中看到的内容: 处理程序是为响应HTTP请求而创建的类型。要使类型成为一个处理程序,只需实现一个ServeH
Handle
,HandleFunc
,HandleFunc
的简单理解
http.Handle(“/profile”,记录器(profilefunc))http.HandleFunc(“/”,HomeFunc)
根据我在Go文档示例中看到的内容:
- 处理程序是为响应HTTP请求而创建的类型。要使类型成为一个处理程序,只需实现一个
方法。ServeHTTP()方法执行实际的请求处理ServeHTTP()
采用路由和处理程序,该类型的实例方法名为Handle()
。注意,它只接受类型,不需要指向显式处理请求的实际方法/函数ServeHttp()
是一种在内部实现HandlerFunc
方法的类型ServeHTTP()
用于将任何具有正确签名的Go函数强制转换为HandlerFunc
。然后,新生成的HandlerFunc
与它处理的路由一起传递给HandlerFunc
方法。 请注意,Handle()
允许只编写函数而不需要专用的处理程序类型来实现请求处理程序HandlerFunc
采用具有正确签名的路由和任何函数HandleFunc()
是首先执行类型转换,然后将函数传递给HandleFunc
方法的缩写Handle()
func handlerName(wr http.ResponseWriter, req *http.Request)
我想。。。简单理解Handle、HandleFunc、HandlerFunc
是一个可以响应HTTP请求的接口,它有一个Handler
方法ServeHTTP(ResponseWriter,*request)
注册一个http.Handle
,以处理与给定处理程序
匹配的http请求模式
注册一个处理函数来处理与给定http.HandleFunc
模式匹配的http请求。处理函数的形式应为
func(ResponseWriter,*Request)
是一种形式为HandlerFunc
的显式函数类型func(ResponseWriter,*Request)
有一个调用自身的方法HandlerFunc
。这允许您将函数强制转换为ServeHTTP
,并将其用作HandlerFunc
处理程序
Logger
是一个示例,它是一个函数,接受一个http.Handler
,并返回另一个包装原始处理程序的http.Handler
。调用此处理程序时,可以(也可以不)在执行某些操作之前和/或之后调用嵌套的http.handler
。因此,第一行是用模式“/profile”注册Logger
中间件中包装的profileFunc
处理程序。第二行是用“/”模式注册HomeFunc
函数
func handlerName(wr http.ResponseWriter, req *http.Request)
http.Handle("/profile", Logger(profilefunc))
http.HandleFunc("/", HomeFunc)