2016-06-28 3 views
0

Я новичок в Golang, и я пытаюсь научиться делать эффективную маршрутизацию. Например, у меня есть папка/каталог контроллера, и внутри этого контроллера я хочу иметь разные Func/методы с их собственными уникальными маршрутами, но я не знаю, как это сделать. Я скачал пакет github.com/gorilla/mux и мое приложение выглядит следующим образом enter image description hereGolang routing в разных контроллерах

Основной раздел моего приложения выглядит следующим образом, и он прекрасно работает: 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/methods внутри моего файла контроллера, который также будет отображаться в браузере. Мой sample.go файл не отображается в браузере, когда я иду в этот 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) 
} 

Когда я вхожу в свой браузер и введите локальный: 8000/новый он говорит файл не найден. Любые предложения были бы замечательными

ответ

1

Предположим, вы запустили файл tim.go, чтобы запустить сервер.

Если это так, проблема в том, что у вас нет маршрута, который вы вызываете /new, у вас должен быть ответ /home.

Для этого вам необходимо переместить функцию HomeHandler в пакет Controllers, а затем импортировать этот пакет в основное объявление, чтобы указать маршруты, которые вам нужны.

Надеюсь, это поможет.

+0

Спасибо большое, что сработало – user1591668

Смежные вопросы