是否可以知道HandleFunc中使用了什么路由

时间:2014-05-27 18:47:47

标签: go

我正在使用net / http http.HandleFunc(" / resource",resource.Handle),我想知道是否有办法查看使用的路由(在本例中为/ resource)把你带到资源。处理?或者我是否必须为此创建一个Mux?

我想知道这一点,从网址路径中提取资源,用它做一些魔术......

2 个答案:

答案 0 :(得分:3)

http://golang.org/pkg/net/http/#Request

使用request.URL.Path获取用于访问处理程序的路径。

答案 1 :(得分:3)

是的,你可以

要点:

  • 使用DefaultServeMux方法使用的HandleFunc
  • 构建假http.Request

例如:

package main

import (
    "fmt"
    "net/http"
    "net/url"
)

func main() {

    theUrl, err := url.Parse("/response")
    if err != nil {
        fmt.Println(err.Error())
        return
    }
    http.HandleFunc("/response", func(w http.ResponseWriter, r *http.Request) {

    })

    handler, path := http.DefaultServeMux.Handler(&http.Request{Method: "GET", URL: theUrl})

    fmt.Println(handler, path)

}

请参阅此Go Playground