持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情
生命不息,学习不止
题外话
之前有掘友问我《跟着开源项目学GO》这个系列怎么不更了,那还用说,被种种原因给耽误了呗,但在程序员这条路上不进则废,所以还得继续学,继续更,接着奏乐,接着舞
废话不多说,上货
开源项目——go-gin-api
go-gin-api
这是一个主要以gin框架为主,包含了一些常用功能,包括日志,菜单,权限,代码生成的功能的一个项目。
需求回顾
好久的上回我们的需求是调整数据展示顺序,也就是调整数据的排序,说了一部分api/func_list.go这个文件的源代码,算是直接完成了一个小需求
但我决定改变文件的讲解路线了,我们打算直接按照请求进入服务器被处理的流程解析
main.go文件解析
看main.go要先看导包,如下
可以看到除了内置包,第一个通用包是configs,导包的时候会直接触发对应包的init()进行初始化,类似构造函数,
那么就来看看config的init()函数初始化了那些东西
configs.go文件解析
首先是通过环境变量筛选配置文件,然后使用io流读取了的ymal配置文件,然后是相关的校验,没事可说的
接着看下一个包router包,这个包对应的文件没有init()函数,而是直接在main.go中直接调用了NewHTTPServer进行http初始化
router.NewHTTPServer函数解析
全部代码有点长,这里就放一下核心函数,这个函数的核心在于这四个方法
对应的结构体r如下
除了路由的设定,这个方法中还包含了数据库的初始化,crdn的初始化,Cache缓存的初始化,过滤器,拦截器,api等初始化,也就是说一个基本的http服务就在这里完成了
这也就是我们请求进入的入口了
下回预告
main.go文件的解析还没有完事,下回咱们继续!!奥里给
下一篇就讲,敬请期待
大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划!