重启《跟着开源项目学GO》- 第一回

148 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情

生命不息,学习不止

题外话

之前有掘友问我《跟着开源项目学GO》这个系列怎么不更了,那还用说,被种种原因给耽误了呗,但在程序员这条路上不进则废,所以还得继续学,继续更,接着奏乐,接着舞

image.png

废话不多说,上货

在这里插入图片描述

开源项目——go-gin-api

go-gin-api

这是一个主要以gin框架为主,包含了一些常用功能,包括日志,菜单,权限,代码生成的功能的一个项目。

需求回顾

好久的上回我们的需求是调整数据展示顺序,也就是调整数据的排序,说了一部分api/func_list.go这个文件的源代码,算是直接完成了一个小需求

但我决定改变文件的讲解路线了,我们打算直接按照请求进入服务器被处理的流程解析

main.go文件解析

看main.go要先看导包,如下

image.png

可以看到除了内置包,第一个通用包是configs,导包的时候会直接触发对应包的init()进行初始化,类似构造函数,

那么就来看看config的init()函数初始化了那些东西

configs.go文件解析

image.png

首先是通过环境变量筛选配置文件,然后使用io流读取了的ymal配置文件,然后是相关的校验,没事可说的

接着看下一个包router包,这个包对应的文件没有init()函数,而是直接在main.go中直接调用了NewHTTPServer进行http初始化

router.NewHTTPServer函数解析

全部代码有点长,这里就放一下核心函数,这个函数的核心在于这四个方法

image.png

对应的结构体r如下

image.png

除了路由的设定,这个方法中还包含了数据库的初始化,crdn的初始化,Cache缓存的初始化,过滤器,拦截器,api等初始化,也就是说一个基本的http服务就在这里完成了

这也就是我们请求进入的入口了

下回预告

main.go文件的解析还没有完事,下回咱们继续!!奥里给

下一篇就讲,敬请期待

在这里插入图片描述

大家看完发现有什么错误,写在下面吧!跟我黑虎阿福比划比划! 在这里插入图片描述