2016-06-28 11 views
0

私はGolangを初めて使用しています。効率的なルーティングを行う方法を学習しようとしています。例えば、私はコントローラのフォルダ/ディレクトリを持っています。コントローラ内には独自の独自のルートを持つ異なるFunc /メソッドが必要ですが、その方法はわかりません。私はgithub.com/gorilla/muxパッケージをダウンロードしていると私のアプリケーションは、自分のアプリケーションの主なセクションは次のようになり、この enter image description here異なるコントローラーでのGolangルーティング

のように見え、それが完璧に働いている:

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) 
} 

問題は、コントローラファイル内のfunc /メソッドをブラウザにも表示する方法です。私は私が私のブラウザに入ると、そのURL

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) 
} 

に移動し、入力したときに私のsample.goファイルがブラウザに表示されないはlocalhost:8000 /新しいそれはファイルが見つかりませんと言い。任意の提案は素晴らしいでしょう

答えて

1

tim.goファイルを実行してサーバーを起動するとします。

もしそうなら、問題はあなたが/newと呼んでいるルートを持っていないということです。答えは/homeでなければなりません。

HomeHandler機能をControllersパッケージに移動し、メインパッケージにこのパッケージをインポートして、必要なルートをインスタンス化する必要があります。

これが役に立ちます。

+0

ありがとうございました – user1591668

関連する問題