gpt4 book ai didi

goji/httpauth - 不能与标准 Golang 'net/http' 库一起使用

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:04 25 4
gpt4 key购买 nike

代码

package main

import (
"fmt"
"log"
"net/http"
"github.com/goji/httpauth"
)


func rootHandler(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/plain")
w.WriteHeader(http.StatusOK)

data := "TEST"

w.Header().Set("Content-Length", fmt.Sprint(len(data)))
fmt.Fprint(w, string(data))
}

func main() {
r:=http.HandlerFunc(rootHandler)
http.HandleFunc("/", httpauth.SimpleBasicAuth("dave", "somepassword")(r))
log.Fatal(http.ListenAndServe(":8080", nil))
}

返回

:!go build test.go
# command-line-arguments
./test.go:23:71: cannot use httpauth.SimpleBasicAuth("dave", "somepassword")(r) (type http.Handler) as type func(http.ResponseWriter, *http.Request) in argument to http.HandleFunc

我做错了什么?我是 Go 的新手,不明白为什么这个例子 here不完整,不包含 YourHandler 函数。

最佳答案

在我的头撞到众所周知的墙上之后,我想通了。

使用http.Handle,而不是http.HandleFunc! :)

所以 main 函数为

func main() {
r:=http.HandlerFunc(rootHandler)
http.Handle("/", httpauth.SimpleBasicAuth("dave", "somepassword")(r))
log.Fatal(http.ListenAndServe(":8080", nil))
}

您有一个使用 net/http 的 httpauth 的完整工作示例!

This answer对内部工作原理也有非常好的概述。

关于goji/httpauth - 不能与标准 Golang 'net/http' 库一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46990556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com