3

我第一次在 Google GO 上闲逛。我已经扩展了“hello world”应用程序以尝试在 init 部分中定义路径。这是我到目前为止所做的:

package hello

import (
    "fmt"
    "net/http"
)

func init() {
    http.HandleFunc("/service", serviceHandler)
    http.HandleFunc("/site", siteHandler)
    http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello, there")
}

func serviceHandler( w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "this is Services")
}

func siteHandler( w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "this is Sites")
}

只有handler()回调被执行——其他的被忽略。例如:http://myserver/service/foo打印Hello, there。我曾希望它会是this is Services

有没有更好的方法来做服务路由?理想情况下,无论如何我希望这些是单独的脚本,但看起来 Go 只有一个脚本,基于 app.yaml_go_app在脚本声明中需要一个特殊字符串这一事实。

谢谢!

4

1 回答 1

6

根据以下文档: http: //golang.org/pkg/net/http/#ServeMux

没有尾部斜杠的路径规范仅与该路径完全匹配。像这样在末尾添加一个斜杠:http.HandleFunc("/service/", serviceHandler)它会按您的预期工作。

于 2012-09-06T18:51:04.697 回答