gpt4 book ai didi

go - mux 在 url 中有空参数

转载 作者:行者123 更新时间:2023-12-03 10:10:50 25 4
gpt4 key购买 nike

我有这个主要的:

func main() {
r := _routerprovider.GetRouter()
srv := &http.Server{
Handler: r,
Addr: "127.0.0.1:8000",
WriteTimeout: 60 * time.Second,
ReadTimeout: 15 * time.Second,
}
fmt.Println("Running in port 8000!")
err := srv.ListenAndServe()
if err != nil {
log.Fatalln(err.Error())
}
}
这是路由器:
func (h HandlerProvider) GetRouter() *mux.Router {
r := mux.NewRouter()
r.HandleFunc("/health", Health).Methods("GET")
r.HandleFunc("/users", GetUsers).Methods("GET")
r.HandleFunc("/users", CreateUser).Methods("POST")
r.HandleFunc("/people", GetPeople).Methods("GET")
r.HandleFunc("/peoplebyid", GetPeopleByID).Methods("GET")
return r
}
无论我做什么,mux.Vars 总是返回一个空 map 。我究竟做错了什么?
这是一个示例处理程序:
func GetPeopleByID(w http.ResponseWriter, r *http.Request) {
params := mux.Vars(r)
id, ok := params["id"]
if !ok {
ErrorHandler(w, r, fmt.Errorf("Error!"), 400)
return
}
idasnumber, err := strconv.Atoi(id)
if err != nil {
ErrorHandler(w, r, fmt.Errorf("Error!"), 400)
return
}
value, ok := services.PeopleDict[idasnumber]

bs, _ := json.MarshalIndent(value, "", " ")
w.Write(bs)
}

最佳答案

mux.Vars()仅在路由匹配时才会填充(因此 Gorilla mux 知道在哪里寻找它们)。通过使用 {name} 来完成路由匹配。或 {name:pattern}占位符在路径中预期变量值的位置。
所以对于以下路线:

r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
你会有 vars 键 categoryid设置各自的值:
vars := mux.Vars(r)
fmt.Fprintf(w, "Category: %v\n", vars["category"])
fmt.Fprintf(w, "Id: %v\n", vars["id"])
在您的代码中,您可以修复 /peoplebyid这样(取决于 id 是什么)使您的 GetPeopleById()处理程序工作:
func (h HandlerProvider) GetRouter() *mux.Router {
// ...
r.HandleFunc("/people/{id:[0-9]+}", GetPeopleByID).Methods("GET")
// ...
}
请参阅 Gorilla Mux 文档,了解如何在此处使用 var: https://github.com/gorilla/mux#examples ,特别是开头的部分:

Paths can have variables. They are defined using the format {name} or {name:pattern}. If a regular expression pattern is not defined, the matched variable will be anything until the next slash.

关于go - mux 在 url 中有空参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65175157/

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