手把手带你写一个Web框架
叶剑峰
腾讯高级工程师,前滴滴技术专家
新⼈⾸单¥59
976 人已学习
课程目录
已更新 4 讲 / 共 34 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词|为什么我们要从零开发框架?
免费
实战第1关:从零开始 (3讲)
01|net/http:使用标准库搭建Server并不是那么简单
02|Context:请求控制器,让每个请求都在掌控之中
03|路由:如何让请求更快寻找到目标函数?
手把手带你写一个Web框架
15
15
1.0x
00:00/00:00
登录|注册

03|路由:如何让请求更快寻找到目标函数?

你好,我是轩脉刃。
上一讲,我们封装了框架的 Context, 将请求结构 request 和返回结构 responseWriter 都封装在 Context 中。利用这个 Context, 我们将控制器简化为带有一个参数的函数 FooControllerHandler,这个控制器函数的输入和输出都是固定的。在框架层面,我们也定义了对应关于控制器的方法结构 ControllerHandler 来代表这类控制器的函数。
每一个请求逻辑,都有一个控制器 ControllerHandler 与之对应。那么一个请求,如何查找到指定的控制器呢?这就是今天要研究的内容:路由,我将带你理解路由,并且实现一个高效、易用的路由模块。

路由设计思路

相信你对路由是干啥的已经有大致了解,具体来说就是让 Web 服务器根据规则,理解 HTTP 请求中的信息,匹配查找出对应的控制器,再将请求传递给控制器执行业务逻辑,简单来说就是制定匹配规则
但是就是这么简单的功能,路由的设计感不同,可用性有天壤之别。为什么这么说呢,我们带着这个问题,先来梳理一下制定路由规则需要的信息。
路由可以使用 HTTP 请求体中的哪些信息,得回顾我们第一节课讲 HTTP 的内容。
一个 HTTP 请求包含请求头和请求体。请求体内一般存放的是请求的业务数据,是基于具体控制业务需要的,所以,我们不会用来做路由。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
该试读文章来自付费专栏《手把手带你写一个Web框架》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59
立即订阅
登录 后留言

精选留言(2)

  • 好家庭
    为IGroup实现如下接口:
    Group(string) IGroup

    类似于builder设计模式,可以链式调用
    2021-09-17
  • 小然
    文中的树的图结构是否问题呢,按照代码实际生成的每一颗trie树root节点下面第一个子节点实际上是segment为空的节点,然后在这个节点下才是各个一级路劲的子节点。是我理解错误吗?我带着文中的树图结构去看代码添加路由算法看起来有很大的偏差,脑袋里想象纠正,先在root节点下先加一个segment为空的节点就好理解了。
    2021-09-17
    1
收起评论
2
返回
顶部