Skip to content

big-sponge/alpaca_demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

开发说明

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

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

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

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

5、浏览器中打开http://127.0.0.1:9999/web/admin, 默认用户名admin,密码111111

img

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

img

目录说明

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

img


-- 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 静态资源目录在这里


设计架构

入口函数内容如下:

img

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

img

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

img

config服务

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

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

img

mysql服务

mysql服务使用的gorm框架

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

主要的操作封装在了models

img

Http服务

Http服务使用的是gin框架

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

img

获取Http服务请求参数

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

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

返回Http服务的请求结果

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

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

img

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包里面

img

后台管理Web段

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

在 app/web/admin里面

参考资料

go语言参考资料

gin框架

gorm框架

logurs框架

viper框架

alpaca-spa框架

沟通交流

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

QQ群

img

微信,添加时请做好备注

img

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published