我是 Golang 的新手,我正在尝试学习如何进行高效的路由。例如,我有一个 Controller 文件夹/目录,在该 Controller 内,我想使用不同的 Func/方法和它们自己独特的路由,但我不知道该怎么做。我已经下载了 github.com/gorilla/mux 包,我的应用程序如下所示
我的应用程序的主要部分如下所示,并且运行良好:tim.go
package main
import(
"net/http"
"fmt"
"github.com/gorilla/mux"
)
func HomeHandler(writer http.ResponseWriter, req *http.Request) {
writer.WriteHeader(200)
fmt.Fprintf(writer, "Home!!!\n")
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/home", HomeHandler).Name("bob")
http.Handle("/",r)
http.ListenAndServe(":8000", nil)
}
问题是如何让我的 Controller 文件中的函数/方法也显示在浏览器上。当我转到该 URL 时,我的 sample.go 文件没有显示在浏览器中
package Controllers
import(
"net/http"
"fmt"
"github.com/gorilla/mux"
)
func HomeHandler(writer http.ResponseWriter, req *http.Request) {
writer.WriteHeader(200)
fmt.Fprintf(writer, "New Home")
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/new", HomeHandler).Name("bob")
http.Handle("/",r)
http.ListenAndServe(":8000/new", nil)
}
当我进入浏览器并输入 localhost:8000/new 时,它说找不到文件。任何建议都会很棒
最佳答案
我假设您运行 tim.go
文件来启动服务器。
如果是这样,问题是你没有调用 /new
的路由,你应该用 /home
得到答案。
为此,您应该将您的HomeHandler
函数移动到Controllers
包,然后在您的主广告中导入该包以实例化您需要的路由。
希望这对您有所帮助。
关于不同 Controller 中的 Golang 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38086377/