跟着开源项目学GO(7)

210 阅读2分钟

「这是我参与2022首次更文挑战的第19天,活动详情查看:2022首次更文挑战

生命不息,学习不止

题外话

今天周三啦,今天工作忙起来了呀,忙的我焦头烂额,都赖外面这大圆月亮,果然十五的月亮十六圆,圆的就像广大掘金网友的身材一样,哈哈哈哈哈哈哈……

截图_20222715112707.png

废话不多说,上货

在这里插入图片描述

开源项目——go-gin-api

go-gin-api

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

main.go 代码解析

截图_20224215114245.png

截图_20221615051603.png

上回已经说完了main.go中日志初始化的模块,声明并初始化了assesslog和cronlog,如上

接下来就是初始HTTP服务模块了,大家冲冲冲……

初始HTTP服务模块

上代码,如下

image.png

首先使用router包的NewHTTPServer函数绑定日志并初始化了一个HTTP服务,稍后我会详细的讲讲。

然后将HTTP服务与端口进行绑定,端口的设定也是在config文件中,大家可以自行更改。

然后开启了goroutine来开启服务的监听,并设置了监听失败的日志内容。

image.png

NewHTTPServer

现在就来详细讲讲router包的NewHTTPServer函数,具体实现如下

截图_20223317023354.png

首先能看到参数是两个日志类型,返回值是一个server对象,server对象的定义如下

截图_20223617023605.png

Mux是一个路由选择器接口,用来执行http请求的路由和分发

Db是一个类似数据库mangeruser的接口,包括数据库的链接设置,最大连接数等等

Cache和上面的Db功能类似,主要是负责redis的管理,提供了redis常用的一些方法

CronServer是定时任务的接口,包括一下定时任务的相关设定,开启与关闭等等

回到NewHTTPServer函数,首先是一个参数判断,没什么好说的

然后初始化了一个resource对象,resource对象定义如下,

截图_20225917025906.png

相比于sever多了一个logger日志实体,和一个拦截器,主要用于相关签名,登录等校验,后面会详细讲讲

然后将传入的logger作为了resource的成员变量,紧接着声明了具体ip和端口,http://127.0.0.1:9999

就是config文件中设定,大家可自行更改。

今天太晚了,就先到这里。

下回预告

下回咱们继续ewHTTPServer函数,学习爱我,我爱学习,大家冲冲冲。

下一篇就讲,敬请期待

在这里插入图片描述

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