没有任何Web框架的GO中的URL中的路径参数

时间:2017-07-05 07:42:11

标签: go

在Go中开发REST api时,我们如何使用路径参数?意思是说URI的格式是什么?

http://localhost:8765/myapp/{param1}/entries/{param2}

我尝试使用类似这样的东西来创建路由但是没有调用处理函数。

请注意,我打算只使用net / http软件包,而不是像gorilla mux这样的任何其他Web框架。

2 个答案:

答案 0 :(得分:1)

我倾向于做的是嵌套处理程序。 “/”由根处理程序处理。它弹出路径的第一部分,将其余部分分配回req.URL.Path(实际上像StripPrefix),确定哪个处理程序通过该前缀处理路由(如果有的话),然后链接适当的处理程序。如果该处理程序需要从路径中解析一个ID,它可以通过相同的机制 - 弹出路径的第一部分,根据需要解析它,然后执行。

这不仅没有外部依赖性,而且比任何路由器都快,因为路由是硬编码而不是动态。除非在运行时路由更改(这很不寻常),否则无需动态处理路由。

答案 1 :(得分:0)

这就是人们使用像gin-gonic这样的框架的原因,因为在net/http软件包IIUC中这样做并不容易。

否则,您需要strings.Split(r.URL.Path, "/")并使用这些元素。