不同 Controller 中的 Golang 路由

标签 go

我是 Golang 的新手,我正在尝试学习如何进行高效的路由。例如,我有一个 Controller 文件夹/目录,在该 Controller 内,我想使用不同的 Func/方法和它们自己独特的路由,但我不知道该怎么做。我已经下载了 github.com/gorilla/mux 包,我的应用程序如下所示 enter image description here

我的应用程序的主要部分如下所示,并且运行良好: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/

相关文章:

go - 如何使用 golang 向 raven db 服务器发出 HTTP 补丁请求?

go - 如何在不使用接收到的数据的情况下释放go channel ?

security - 如何在 POST 方法中传递 header ?

ubuntu - 在golang中提取tarball时丢失文件

在我关闭连接或退出客户端应用程序之前,golang 连接不会写入

json - 如何使用 html 模板解码结构?

go - Go 中执行的函数片段的错误处理

go - if 作为表达式和 if 作为语句之间的区别

multithreading - 从不同的线程读取值

javascript - 如何在 Go 中访问网站特定的 Javascript 对象?