net / http:是否可以使用http.HandleFunc自定义参数?

时间:2016-12-07 03:38:06

标签: go

我试图找到一种方法来创建特殊路由,这样就可以使用params(/ url /:param)来发布请求。

我尝试过这样的事情:

http.HandleFunc("/myroute/:myparam",myfunction)

我正在跳跃,以便能够获得旁边的http请求中的params" myfunction"使用req.Form,但它继续在我身上失败,我得到了404&#39。编辑。

我认识到这是一个奇怪的问题因为我可以在函数体中传递我的参数,但是为了便于使用/显示,我被要求能够预生成一个静态列表&#34 ;路线"在一些预设上,以便它可以作为不同的网址+可选的参数分配,而不是每个人+参数的一个网址..

2 个答案:

答案 0 :(得分:3)

默认DECLARE sqlCMD VARCHAR(500); SET @sqlCMD = 'SELECT * FROM OPENQUERY(PASON, ''SELECT * FROM MyTable WHERE MyPrimaryKey=''''' + @Variable + ''''''')') EXEC (@sqlCMD); 无法使用,但您可以使用其他路由器,例如httprouterGorilla Muxchi

以下是Mux用法的示例:

httprouter

答案 1 :(得分:0)

您可以在/上定义一个handle函数,然后对路径进行自定义解析,例如拆分/字符。

http.HandleFunc("/", dispatcher)

这样,您的处理程序将接受所有内容,并且您可以将请求手动路由到相应的函数。例如,PUT调用在资源(/orders/2)之后需要一些参数

logs.Info("The URL that you are calling is: " + req.URL.Path)

输出:The URL that you are calling is: /orders/2

您还可以执行以下操作: http.HandleFunc("/orders/", dispatcher) 缩小处理程序的范围。这样,您可以保留对Go http软件包路径的资源部分的验证。