2014-10-27 12 views
8

https://cloud.google.com/appengine/docs/go/users/Google Cloud Go Handler senza router Gorilla Mux?

vedo qui che non specificano utilizzare qualsiasi router ...: https://cloud.google.com/appengine/docs/go/config/appconfig

In Google Cloud quando viene utilizzato con Golang, si dice per specificare ogni gestore in app.yaml. Questo significa che non dovremmo usare un router di terze parti per prestazioni migliori? Mi piacerebbe Gorilla Mux per router ... Come funzionerebbe se utilizzo altri router per l'app Golang di Google App Engine?

Per favore fatemi sapere. Grazie!

risposta

8

È possibile utilizzare Gorilla Mux con App Engine. Ecco come:

Alla fine della sezione gestori di app.yaml, aggiungere un gestore di script che instrada tutti i percorsi per l'applicazione Go:

application: myapp 
version: 1 
runtime: go 
api_version: go1 

handlers: 

- url: /(.*\.(gif|png|jpg))$ 
    static_files: static/\1 
    upload: static/.*\.(gif|png|jpg)$ 

- url: /.* 
    script: _go_app 

Lo script _go_app è il programma Go compilato da App Engine. Il modello /.* corrisponde a tutti i percorsi.

La funzione principale generata da App Engine invia tutte le richieste allo DefaultServeMux.

In una funzione init(), creare e configurare un Gorilla Router. Registrare il router Gorilla con DefaultServeMux per gestire tutti i percorsi:

func init() { 
    r := mux.NewRouter() 
    r.HandleFunc("/", homeHandler) 

    // The path "/" matches everything not matched by some other path. 
    http.Handle("/", r) 
} 
+0

Fantastico, ho avuto lo stesso problema ... –