没有路由器Gorilla Mux的Google Cloud Go处理程序?

时间:2014-10-27 04:32:53

标签: google-app-engine go router

https://cloud.google.com/appengine/docs/go/users/

我在这里看到他们没有指定使用任何路由器...:https://cloud.google.com/appengine/docs/go/config/appconfig

在Golang中使用Google Cloud时,它会指定app.yaml中的每个处理程序。这是否意味着我们不应该使用第三方路由器以获得更好的性能?我希望Gorilla Mux用于路由器......如果我将其他路由器用于Google App Engine Golang App,它会如何工作?

请告诉我。谢谢!

1 个答案:

答案 0 :(得分:12)

您可以将Gorilla Mux与App Engine配合使用。方法如下:

app.yaml的处理程序部分的末尾,添加一个脚本处理程序,将所有路径路由到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

_go_app脚本是App Engine编译的Go程序。模式/.*匹配所有路径。

App Engine生成的主要功能会将所有请求分派到DefaultServeMux

在init()函数中,创建并配置Gorilla Router。使用DefaultServeMux注册Gorilla路由器以处理所有路径:

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

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