I had a beego application that was working, and then my router stopped finding the controller, and I have no idea why. No matter what url I type, the router does not direct to the controller complaining nomatch
2016/07/26 17:24:50 [router.go:829][D] | GET | / | 478.352µs | notmatch |
app.conf
appname = exampleapp
httpport = 8080
runmode = dev
router.go
package routers
import (
"github.com/astaxie/beego"
"example/controllers"
)
func init() {
beego.Router("/", &controllers.MainController{})
}
default.go (controller)
package controllers
import (
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (c *MainController) Get() {
c.Data["Website"] = "http://localhost:8080"
c.TplName = "index.tpl"
}
main.go
package main
import (
"fmt"
"github.com/astaxie/beego"
)
func main() {
fmt.Pritnln("Starting Beego App")
beego.Run()
fmt.Println("Finished Running Beego App")
}
I believe this is following the specifications of http://beego.me/docs/mvc/controller/router.md so I would like to understand why it does not find the controller.
You are not importing routers
package. If you don't import routers
in anywhere, the init
function will never be executed. You can test it adding a simple fmt.Println('I'm initialized')
in routers.init
function.
func init() {
fmt.Println('I'm initialized')
beego.Router("/", &controllers.MainController{})
}
Ok, you must add a new import with _
to say that you won't use, but, the init
function will be executed! Then you must write this in main package:
import (
"fmt"
"github.com/astaxie/beego"
_ "example/routers"
)
I hope that it is useful! :-)