【问题标题】:Golang routing in different controllers不同控制器中的 Golang 路由
【发布时间】:2016-10-31 09:08:51
【问题描述】:

我是 Golang 的新手,我正在尝试学习如何进行有效的路由。例如,我有一个控制器文件夹/目录,并且在该控制器内部,我想拥有不同的 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)
}

问题是如何让我的控制器文件中的函数/方法也显示在浏览器上。当我转到该 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 时,它显示找不到文件。任何建议都会很棒

【问题讨论】:

    标签: go


    【解决方案1】:

    我假设你运行tim.go 文件来启动服务器。

    如果是这样,问题是您没有呼叫/new 的路线,您应该通过/home 得到答案。

    为此,您应该将 HomeHandler 函数移动到 Controllers 包,然后将此包导入您的主广告中,实例化您需要的路线。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      • 2015-10-09
      • 2013-09-24
      • 2016-03-29
      • 1970-01-01
      • 2019-07-18
      • 2017-04-05
      相关资源
      最近更新 更多