Reputation: 1169
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.
Upvotes: 0
Views: 2070
Reputation: 810
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! :-)
Upvotes: 2