go笔记二期-http router

2020-05-27  本文已影响0人  路人爱早茶

原文地址:https://cch123.github.io/httprouter/

http router是什么

功能上讲就是url->hander函数

http router构造

image

restful风格路由

image

同一个url会提供多个http方法,对资源进行创建更新删除获取
get put post 等各一颗

httprouter一些概念

path

到达根节点,所经过的字符串路径


image

indices

子节点索引,当子节点是是非参数类型,即本节点wildchild是false时,会将每个子节点首字母放在该索引组,实际是string


image

如果子节点是参数节点,indices应该是空字符串


image

wildchild

如果一个节点字节点中有param(wildchild)节点,那该节点wildchild就是true

catchall

以*结尾路由,catchall在静态文件用的多

httprouter 中dadix tree的构造

假定插入三条路由,都用get

第一条路由

/marketplace_listing/plans/


image

第二条路由

/marketplace_listing/plans/:id/acounts


image

第三条路由

image

路由冲突

路由发生冲突,主要是static节点,param节点,catchall节点
例如

conflict:
GET /user/info/:name
GET /user/:id

param节点和普通字符串节点无法共存,上述info会被解释为:id
如果是method不同即可

所有情况

正确应该是

image

即同一个节点,其子节点的情况只可能是:

上一篇 下一篇

猜你喜欢

热点阅读