I am trying to consolidate routing functionality within a web service. The package main has two files of concern, route.go
and main.go
.
Within route.go
I am defining routing as follows:
package main
import (
"github.com/justinas/alice"
"net/http"
)
func (app *Application) Routes() http.Handler {
standardMiddleware := alice.New(app.logRequest)
mux := http.NewServeMux()
mux.HandleFunc("/ping", helpers.Ping)
return standardMiddleware.Then(mux)
}
Within main.go
I am trying to execute the application as follows:
package main
import (
"flag"
"log"
"net/http"
"os"
)
type Application struct {
errorLog *log.Logger
}
func main() {
addr := flag.String("addr", ":8080", "HTTP Network Address")
flag.Parse()
errorLog := log.New(os.Stderr, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile)
app := &Application{
errorLog: errorLog,
}
srv := &http.Server{
Addr: *addr,
ErrorLog: errorLog,
Handler: app.Routes(),
}
err := srv.ListenAndServe()
errorLog.Fatal(err)
}
When I execute the program I get the following error: app.Routes undefined (type *Application has no field or method Routes)
I'm not sure why the method isn't registering correctly?