Ich muss eine Route erstellen, die zwei Subdomains (prefix.api.example.com und prefix.api.sandbox.example.com) mit Gorilla mux Router entspricht. Bis jetzt habe ich die Regex unten, aber der Router gibt 404 auf Anfragen zurück. Irgendeine Idee warum ist das?Wie Subdomain mit Gorilla Mux übereinstimmen
router := mux.NewRouter()
route := router.Host(`prefix.api{_:(^$|^\.sandbox$)}.example.com`)
Mehr Code
package main
import(
"github.com/gorilla/mux"
"net/http"
)
type handler struct{}
func (_ handler)ServeHTTP(w http.ResponseWriter, r *http.Request){
w.Write([]byte("hello world"))
w.WriteHeader(200)
}
func main() {
router := mux.NewRouter().StrictSlash(true)
route := router.Host(`prefix.api{_:(^$|^\.sandbox$)}.example.com`)
route.Handler(handler{})
http.Handle("/", router)
panic(http.ListenAndServe(":80", nil))
}
Anfrage:
$ curl prefix.api.sandbox.example.com/any -v
* Trying 127.0.0.1...
* Connected to prefix.api.sandbox.example.com (127.0.0.1) port 80 (#0)
> GET /some HTTP/1.1
> Host: prefix.api.sandbox.example.com
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Content-Type: text/plain; charset=utf-8
< X-Content-Type-Options: nosniff
< Date: Wed, 01 Jun 2016 22:08:21 GMT
< Content-Length: 19
<
404 page not found
* Connection #0 to host prefix.api.sandbox.example.com left intact
Ich denke, gespielt werden, dass, wie es passt mehr Routen als es sollte, oder? https://play.golang.org/p/uvxjxrfDrE –
Wenn das der Fall wäre, sollte 'prefix.api.xsandbox.example.com' 'hallo world' zurückgegeben haben? – chrsblck
@Theuserwithnohat aktualisiert mit den generierten Host-Regexes. – chrsblck