- 博客(11)
- 收藏
- 关注
原创 七天用GO从零实现系列-学习
所谓分组,是指路由的分组。当然了,按照我们一开始的分析,中间件是应用在分组上的,那还需要存储应用在该分组上的中间件(middlewares)。中间件可以给框架提供无限的扩展能力,应用在分组上,可以使得分组控制的收益更为明显,而不是共享相同的路由前缀这么简单。因此,我们今天实现的分组控制也是以前缀来区分,并且支持分组的嵌套。分组上的中间件(middleware),也都会作用在子分组,子分组还可以应用自己特有的中间件。是默认的最顶层的分组,也就意味着给所有的路由,即整个框架增加了记录日志的能力。
2024-05-22 16:42:46
416
1
原创 七天用GO从零实现系列-学习
之前,我们用了一个非常简单的map结构存储了路由表,使用map存储键值对,索引非常高效,但是有一个弊端,键值对的存储的方式,只能用来索引静态路由。那如果我们想支持类似于这样的动态路由怎么办呢?所谓动态路由,即一条路由规则可以匹配某一类型而非某一条固定的路由。例如,可以匹配hello/jack等。动态路由有很多种实现方式,支持的规则、性能等有很大的差异。例如开源的路由实现gorouter支持在路由规则中嵌入正则表达式,例如,即路径中的参数仅匹配数字和字母;另一个开源实现httprouter。
2024-05-09 16:48:42
1675
原创 七天用GO从零实现系列-学习
但是这两个对象提供的接口粒度太细,比如我们要构造一个完整的响应,需要考虑消息头(Header)和消息体(Body),而 Header 包含了状态码(StatusCode),消息类型(ContentType)等几乎每次请求都需要设置的信息。因此,如果不进行有效的封装,那么框架的用户将需要写大量重复,繁杂的代码,而且容易出错。最重要的还是通过实现了 ServeHTTP 接口,接管了所有的 HTTP 请求。我修改之后,返回了用户名和密码,这里跟我之前学的gin感觉是一样的,有更好的可以提出。
2024-05-04 20:54:57
404
原创 七天用GO从零实现系列-学习
Go语言内置了net/http库,封装了HTTP网络编程的基础的接口,我们实现的GeeWeb 框架便是基于net/http的。我们接下来通过一个例子,简单介绍下这个库的使用。
2024-05-04 16:29:09
1584
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人