go语言mysql配置文件_go语言框架: 分享一下整理的go语言框架,其中整理了http服务、日志log、配置文件config、定时任务、mysql、gorm、http返回code...

这篇博客介绍了基于Go语言的应用框架,详细讲解了配置文件加载、日志服务(使用logrus)、数据库操作(使用gorm)以及HTTP服务(使用gin)。还阐述了项目的目录结构、包的依赖关系以及HTTP响应的设计,提供了代码示例和相关框架的参考资料。
摘要由CSDN通过智能技术生成

开发说明

1、将代码下载到GOPATH的src目录下面,并且将项目目录名称改成 alpaca_demo

2、数据库脚步在 doc/sql下面

3、环境相关的配置文件在dev下面,具体使用哪一个文件是由环境变量ENV_MODE决定,默认是使用development.json

4、运行或者调试cmd/alpaca下面的main函数

47937859e5ac7d196abc33c439236791.png

输入用户名、密码登录成功后,内容如下

eda11e8929629ee2e8d505b3a9db6afa.png

目录说明

主要的几个目录的解释如下

074dae829c195b768ffa496dc78c1b92.png

-- app 目录放项目代码

-- app/api 放接口调用的入口函数

-- app/api/admin 是后台管理的模块的接口

-- app/api/v1 是前台模块的接口

-- app/bootstrap 目录放项目启动时候,初始化的一个函数,例如加载配置文件,配置log,启动gin的路由监听等

-- app/common 存放公共调用函数,例如接口的返回状态码,日志log,链接mysql,加密、解密函数等待

-- app/config 存放配置文件的目录,要注意这里和env目录的区别,env目录下是为了项目在不同的环境下加载不同的配置文件,一些固定不变的配置可以放到 app/config下

-- app/models 存放数据库访问的相关函数,一般是一个数据表 对应一个文件

-- app/routers 存放路由配置信息

-- app/service 存放编写复杂的业务逻辑

-- cmd 存放项目的入口文件

-- doc 存放一些文档资料,例如sql脚步也放到这里了

-- env 存放环境相关的配置,具体使用哪一个文件是由环境变量ENV_MODE决定,默认是使用development.json

-- storage 存放程序运行时的一些配置,例如日志,程序pid默认放到这里了

-- vendor 项目的依赖包在这里,用govendor管理

-- web 静态资源目录在这里

设计架构

入口函数内容如下:

1d1c5cd31ae95b219f20cbfa1f7eb5e8.png

代码的总体结构设计如下图:

bae2a872328c55c5e9f11f1752b89e47.png

bootstrap 包是启动相关的函数。main函数调用bootstrap包中的函数初始化配置信息,如加载配置文件,配置log,开启http监听等。

common包 里面是一些公用函数,任何其他包都可以引用common包,但是common包禁止引用除了vendor以外的其他一切包

api接口 函数可以引用common包、models包、services包等实现具体的业务逻辑

services包 函数可以引用common包,models包实现具体的业务逻辑

models包 可以引用common包,但是不可以引用services包

Go语言初学经常会遇到包循环引用的问题,因此梳理清晰包与包直接的调用关系很重要

log服务

log服务使用的是logrus框架,在app/bootstrap/log 中进行初始化配置

common.Log 是一个logrus的实例,使用log的时候,可以直接使用common.Log.Info(""log内容") 函数记录log

763468ab149e62ca7c1190dd942c1c66.png

config服务

config服务基于viper框架搭建,加载env环境变量使用是viper,在app/bootstrap/config 中进行初始化配置

并且封装了一个config包,在app/config下面,使用时候,可以直接使用这个包。

bc6f57ba2c53269d300e5bfc3ebce49e.png

mysql服务

mysql服务使用的gorm框架

建立链接的函数是app/common/mysql.go里面的 Mysql()

主要的操作封装在了models

f617b092f58062b44bf2d46396cf59fb.png

Http服务

Http服务使用的是gin框架

在 app/bootstrap/router 中进行初始化配置,路由配置文件在 app/routers中

32d6e4507bc9f79be0c5338cfab40afa.png

获取Http服务请求参数

可以使用gin框架提供的方法进行获取http服务的请求参数

也可以使用实例中封装的 api.Input(c, "UserName", "") 函数获取

返回Http服务的请求结果

可以使用gin框架提供的方法进行获取http服务的请求参数

也可以使用实例中封装的 api.Output(c, res, err) 返回结果

bf61a4623a0173c8b506d854867f0627.png

Http返回结果的设计

返回结果包括三部分,code、data、error

code必有,内容用字符串表示,不是数字

data是在有请求结果集的时候,用于放结果集

error是在出错的时候会用

code 有三大类

** 结果正常 **

code:"success"" 表示请求正常

** 用户错误 **

格式就是 fail.xxx ,以fail开头,后面接具体错误内容,用逗号分割,例如:

code:"fail.param.null.password" 可以表示用户输入的密码是空

** 系统错误 **

code:"error"" 表示系统内部错误,例如mysql没恋上,其他panic错误

返回的code放在了 app/common/code包里面

c4cee24ff74e035a13cab56a6f4fd10a.png

后台管理Web段

后台管理Web段使用的是alpaca-spa框架

在 app/web/admin里面

参考资料

go语言参考资料

gin框架

gorm框架

logurs框架

viper框架

alpaca-spa框架

沟通交流

有问题可以加入QQ群或者我的微信交流沟通

QQ群

65d35fe4b5d13b2c8bf8faa073a69152.png

微信,添加时请做好备注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值