Skip to content

Instantly share code, notes, and snippets.

@surma
Last active December 11, 2015 00:29
Show Gist options
  • Save surma/4517006 to your computer and use it in GitHub Desktop.
Save surma/4517006 to your computer and use it in GitHub Desktop.
Router Test
package main
import (
"fmt"
"io"
"net/http"
"net/http/httptest"
"os"
"github.com/gorilla/mux"
)
type Subapp struct {
*mux.Router
}
func NewSubapp() *Subapp {
app := &Subapp{
mux.NewRouter(),
}
app.HandleFunc("/a", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Subapp/a\n")
})
app.HandleFunc("/b", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Subapp/b\n")
})
return app
}
func main() {
mux := setupVariantA()
// mux := setupVariantB()
rr := httptest.NewRecorder()
r, _ := http.NewRequest("GET", "http://localhost/subapp/a", nil)
mux.ServeHTTP(rr, r)
fmt.Println("Response:")
io.Copy(os.Stdout, rr.Body)
}
func setupVariantA() *mux.Router {
r := mux.NewRouter()
sr := r.PathPrefix("/subapp").Subrouter()
sr.Handle("/", NewSubapp())
return r
}
func setupVariantB() *mux.Router {
r := mux.NewRouter()
r.PathPrefix("/subapp").Handler(http.StripPrefix("/subapp", NewSubapp()))
return r
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment