gpt4 book ai didi

gorilla mux 路由器处理程序

转载 作者:IT王子 更新时间:2023-10-29 02:05:51 25 4
gpt4 key购买 nike

我无法让 gorilla mux 工作..

当请求 http://www.localhost:9000 时,Web 服务器返回 404 page not found

但这有效 http://localhost:9000/ 并打印 Hello world

package main

import (
"net/http"
"fmt"
"log"
"github.com/gorilla/mux"
)

func Handler(w http.ResponseWriter, r *http.Request){
fmt.Fprint(w, "Hello world")
}

func main(){
r := mux.NewRouter()
r.Host("www.localhost")
r.HandleFunc("/", Handler)
err := http.ListenAndServe(":9000", r)
if err != nil {
log.Fatal("ListenAndServe error: ", err)
}
}

最佳答案

您希望能够同时支持 localhost 和 www.localhost

package main

import (
"fmt"
"log"
"net/http"

"github.com/gorilla/mux"
)

func Handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello world")
}

func main() {
r := mux.NewRouter()
r.Host("www.localhost").Path("/").HandlerFunc(Handler)
r.HandleFunc("/", Handler)
err := http.ListenAndServe(":9000", r)
if err != nil {
log.Fatal("ListenAndServe error: ", err)
}
}

如果您仔细阅读文档,您会注意到 r.Host() 只是另一个模式匹配函数。它没有为该路由器设置任何全局规则。

如果你想让那个规则被继承,你需要使用一个子路由器:

subrouter := r.Host("www.localhost").Subrouter()

然后你用“subrouter”代替“r”

关于 gorilla mux 路由器处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26086884/

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