7天用Go从零实现Web框架Gee教程(2)

本文参考:https://geektutu.com/post/gee.html

好的,让我们继续往下看

Day2 上下文

先看看文件结构吧

go.mod
│ main.go

└─gee
context.go
gee.go
go.mod
router.go

这里是对gee框架进一步拆解模块化,分为context,gee,router,重点看看context,就是其实就是将Request和Response进行了封装,顶多将常用的Path、Method、StatusCode拎出来了而已, 噢,还有内部的方法,写响应的String、JSON、Data、HTML各种格式。

type Context struct {
// origin objects
Writer http.ResponseWriter
Req *http.Request
// request info
Path string
Method string
// response info
StatusCode int
}

router是关于路由映射的一些方法(废话x,而gee中只是对这些方法进行简单的调用,一开始还觉得有点多此一举的,不过这是为了框架的清晰划分

Day3 前缀树路由

老规矩,先看看文件结构

go.mod
│ main.go

└─gee
context.go
gee.go
go.mod
router.go
router_test.go
trie.go

// 顺带一提,tree /f查看文件结构

在之前的基础上增加了trie文件和router_test文件

从文章标题就知道路由的增强是重头戏,这里通过trie树的数据结构对路由进行了加强,实现了动态路由,trie文件就是trie树算法的文件,还有就是router_test这个文件,出现了单元测试的概念,有所耳闻,当初看到的时候很兴奋,看了看是在文件中设置了一些预设,以便进行测试,还有就是router_test文件的图标都是不一样的,看来在Goland看来router_test文件是比较独特的,对于单元测试这一块就放到下一次再写好了,因为现在我也没搞懂,停下来写博客只是因为思路比较混乱,现在好多了(滑稽),前面就是未知领域了,等我先研究研究