公司有个go的小项目,主要是对内提供web服务,而go原生的router太弱了,上网搜索了下,本来打算用github.com/drone/routes 这个库的,但是这库对url不能很好的支持,例如要匹配/user/1/userinfo.json这样的url,这个库就没办法支持。

所以自己就参考drone/routes 写了一个小router,主要是:

  • 改善了url正则匹配的,使其匹配更多模式,更加可以自由定制
  • 提高了匹配时查找的性能,使用路由的前缀和http方法做hashtable查找,路由再多,查找平均也是o(1)的时间复杂度
 

如果觉得不错,欢迎star

源码:https://github.com/Barbery/goRouter