func init() { DefaultMux = web.New() DefaultMux.Use(middleware.RequestID) DefaultMux.Use(middleware.Logger) DefaultMux.Use(middleware.Recoverer) DefaultMux.Use(middleware.AutomaticOptions) }
func main() { // Add routes to the global handler goji.Get("/", Root) // Fully backwards compatible with net/http's Handlers goji.Get("/greets", http.RedirectHandler("/", 301)) // Use your favorite HTTP verbs goji.Post("/greets", NewGreet) // Use Sinatra-style patterns in your URLs goji.Get("/users/:name", GetUser) // Goji also supports regular expressions with named capture groups. goji.Get(regexp.MustCompile(`^/greets/(?P<id>\d+)$`), GetGreet) // Middleware can be used to inject behavior into your app. The // middleware for this application are defined in middleware.go, but you // can put them wherever you like. goji.Use(PlainText) // If the last character of a pattern is an asterisk, the path is // treated as a prefix, and can be used to implement sub-routes. // Sub-routes can be used to set custom middleware on sub-applications. // Goji's interfaces are completely composable. admin := web.New() goji.Handle("/admin/*", admin) admin.Use(SuperSecure) // Goji's routing, like Sinatra's, is exact: no effort is made to // normalize trailing slashes. goji.Get("/admin", http.RedirectHandler("/admin/", 301)) // Set up admin routes. Note that sub-routes do *not* mutate the path in // any way, so we need to supply full ("/admin/" prefixed) paths. admin.Get("/admin/", AdminRoot) admin.Get("/admin/finances", AdminFinances) // Use a custom 404 handler goji.NotFound(NotFound) // Call Serve() at the bottom of your main() function, and it'll take // care of everything else for you, including binding to a socket (with // automatic support for systemd and Einhorn) and supporting graceful // shutdown on SIGINT. Serve() is appropriate for both development and // production. goji.Serve() }
func TestNoCache(t *testing.T) { rr := httptest.NewRecorder() s := web.New() s.Use(NoCache) r, err := http.NewRequest("GET", "/", nil) if err != nil { t.Fatal(err) } s.ServeHTTP(rr, r) for k, v := range noCacheHeaders { if rr.HeaderMap[k][0] != v { t.Errorf("%s header not set by middleware.", k) } } }