您可以
http.Handler按照此处所述的方法进行组合,以重用代码。
在您的情况下,组合器将如下所示(根据您的口味和要求进行调整):
func NewCanonicalDomainHandler(next http.HandlerFunc) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if r.Host != "myapp.com" { u := *r.URL u.Host = "myapp.com" u.Scheme = "http" http.Redirect(w, r, u.String(), http.StatusMovedPermanently) return } next(w, r) }}您可以使用以下方法包装处理程序:
http.Handle("/foo", NewCanonicalDomainHandler(someHandler))


