-2

我在 Go 中设置了一个 Gorilla Mux 路由器。我在该路由器中设置了路由,以及与这些路由关联的函数处理程序。如果您打开浏览器窗口并输入特定的 URL ,则路由器可以正常工作。但是,我遇到的问题是如果在命令行中输入 URL 该怎么办。我知道如何从命令行参数存储 URL,但我不知道如何将存储为 Go 中的 URL 变量的 URL 转发到路由器。比如,如果 URL 是在命令行中给出的而不是通过浏览器窗口输入的,你如何调用路由的函数处理程序?

代码:

u, err := url.Parse(os.Args[1])
if err != nil {
    fmt.Println(err.Error())
}

host, port, _ := net.SplitHostPort(u.Host)

s := []string{":", port};

router := ANewRouter()

log.Fatal(http.ListenAndServe(strings.Join(s, ""), router))

//Route URL to router, somehow
4

1 回答 1

1

如果您尝试在 Go 中发出 HTTP 请求,那么在标准库中有易于使用的方法:https://golang.org/pkg/net/http/

正如 JimB 在评论中指出的那样,您可以使用类似的东西curl并完全放弃使用 Go。当您可以做并获得相同的结果时,从 Go启动curl对我来说没有多大意义。resp, err := http.Get(urlArg)还有其他 HTTP 动词的方法,如果您需要对请求进行更精细的控制,您可以使用该Do方法并创建Request对象来执行诸如设置标头之类的操作。

于 2015-10-26T19:43:42.730 回答