仅使用标准库的Golang中间件

仅使用标准库的Golang中间件,go,Go,我的第一个stackoverflow问题,所以请不要太在意我关于stackoverflow的幼稚和问题,golang初学者 我想知道这两个调用之间的区别,以及对Handle,HandleFunc,HandleFunc的简单理解 http.Handle(“/profile”,记录器(profilefunc)) http.HandleFunc(“/”,HomeFunc) 根据我在Go文档示例中看到的内容: 处理程序是为响应HTTP请求而创建的类型。要使类型成为一个处理程序,只需实现一个ServeH

我的第一个stackoverflow问题,所以请不要太在意我关于stackoverflow的幼稚和问题,golang初学者

我想知道这两个调用之间的区别,以及对
Handle
HandleFunc
HandleFunc
的简单理解

http.Handle(“/profile”,记录器(profilefunc))
http.HandleFunc(“/”,HomeFunc)


根据我在Go文档示例中看到的内容:

  • 处理程序是为响应HTTP请求而创建的类型。要使类型成为一个处理程序,只需实现一个
    ServeHTTP()
    方法。ServeHTTP()方法执行实际的请求处理

  • Handle()
    采用路由和处理程序,该类型的实例方法名为
    ServeHttp()
    。注意,它只接受类型,不需要指向显式处理请求的实际方法/函数

  • HandlerFunc
    是一种在内部实现
    ServeHTTP()
    方法的类型
    HandlerFunc
    用于将任何具有正确签名的Go函数强制转换为
    HandlerFunc
    。然后,新生成的
    HandlerFunc
    与它处理的路由一起传递给
    Handle()
    方法。 请注意,
    HandlerFunc
    允许只编写函数而不需要专用的处理程序类型来实现请求处理程序

  • HandleFunc()
    采用具有正确签名的路由和任何函数
    HandleFunc
    是首先执行类型转换,然后将函数传递给
    Handle()
    方法的缩写

请求处理功能的签名为:

  func handlerName(wr http.ResponseWriter, req *http.Request)
我想。。。简单理解Handle、HandleFunc、HandlerFunc

  • Handler
    是一个可以响应HTTP请求的接口,它有一个
    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)