github地址:https://github.com/MRchenao/gogebi欢迎star

这是什么?

1.这是一个基于go语言gin框架的web项目骨架,专注于前后端分离的业务场景,其目的主要在于将web项目主线逻辑梳理清晰,最基础的东西封装完善,开发者更多关注属于自己的的业务即可。
2.本项目骨架封装(主要包括用户相关的接口参数验证器、注册、登录获取token、自动化配置、优雅的路由风格、简易的数据库操作CURD以及JWT鉴权、单元测试、grpc、swagger文档等),开发者拉取本项目骨架,在此基础上就可以快速开发自己的项目。
3.后续待完善功能为后台管理权限,角色用户等功能的开发,框架优化等

项目目录结构介绍

├── app                                项目应用目录
│   ├── Admin                          后台管理模块
│   │   ├── Controllers                后台管理控制器
│   │   ├── Middleware                 后台管理中间件(存放鉴权,中间事务处理等逻辑文件)
│   │   └── Services                   后台业务逻辑服务模块
│   ├── Http                           前端api模块
│   │   ├── Controllers
│   │   │   └── Api                    api模块控制器存放文件位置,以下几个为样例文件,实际开发中可根据样例开发,不用可删除
│   │   │       ├── address.go
│   │   │       ├── ft.go
│   │   │       ├── main.go            api控制器通用方法文件
│   │   │       └── user.go
│   │   ├── Middleware                  中间件模块
│   │   │   ├── auth.go                 用户权限验证
│   │   │   └── pageSize.go             分页中间件
│   │   ├── Serializer                 序列化输出模块
│   │   │   ├── address.go
│   │   │   ├── ft.go
│   │   │   ├── main.go          序列化输出公用方法文件
│   │   │   └──user.go
│   │   └── Services                   业务逻辑模块
│   │       ├── address.go
│   │       ├── ft.go
│   │       ├── main.go                业务逻辑公用方法文件
│   │       └── user.go
│   ├── Models                        数据库模型
│   │   ├── address.go
│   │   ├── Build                     数据库公用操作方法文件
│   │   │   └── build.go
│   │   └──user.go
│   └── Repositories                  数据仓库模块(获取数据,数据缓存等操作逻辑在这一层完成)
│       ├── address.go
│       └──user.go
├── config                                  业务配置文件
│   └── config.yml
├── core                                    框架核心逻辑模块
│   ├── bootstrap.go                  核心启动文件
│   ├── log.go                        日志文件
│   ├── router.go                     核心路由处理文件
│   ├── rpc_service.go                rpc服务
│   └── viper.go                      配置加载初始化
├── docs                              swagger文档文件
│   ├── docs.go
│   ├── swagger.json
│   └── swagger.yaml
├── gin.log                           项目日志文件
├── main.go                           项目入口文件
├── Makefile
├── proto                             proto文件
│   ├── hello.pb.go
│   ├── hello.proto
├── routes                             路由文件
│   ├── auth_routes.go           带权限路由
│   ├── main.go                  路由公用配置主文件
│   └── routes.go               不带权限路由
├── rpc
│   └── rpc_server.go           rpc服务模块
├── storage                           日志文件存储模块
│   └── logs
│       └── log.log
├── test                              单元测试模块
│   ├── address_test.go
│   └── main.go                 单元测试公用方法文件
└── utils                       工具模块目录├── database                数据库操作│   └── db.go├── redis_factory           redis操作│   └── redis.go├── sign                    jwt加密鉴权│   └── jwt.go└──  util.go                 工具方法

##项目开发流程

基本流程

1.首先添加一个前端请求url,在routes/routes.go文件中添加您的url,格式如下:
各参数对应的含义分别是:请求类型,请求url,请求的控制器方法

{http.MethodPost, "user/login", ctrl.user.Login}

2.在app/Http/Controllers/Api目录下创建控制器文件address.go添加login方法,具体请看项目文件

3.在app/Http/Services中创建对应的services文件,这里书写业务逻辑,同理在repositories创建操作数据的文件,在model中创建数据库文件

4.在app/Http/Serializer中创建最终输出的数据序列化处理逻辑文件,最终输出给前端,请求结束

针对需要鉴权的路由的处理

基本流程中展示的是无需鉴权操作的流程,针对需要鉴权的路由,首先您需要在routes/main.go文件的AuthRouters方法里面添加您的鉴权中间件,例如:

{MiddleWares: []gin.HandlerFunc{Middleware.Auth()}, Uris: authMiddleWareRoutes()},

这里的MiddleWares就是需要添加的鉴权的中间件,如果有多个可以添加多个中间件。Uris定义了你需要通过这个中间件的路由函数方法,接下来就是在路由函数方法中添加您的路由,您的所有在函数方法中添加的路由都会首先需要先通过您的中间件,具体样例可参考auth_routes.go文件

数据库操作

本项目是居于gorm来操作数据库的,其中在app/Models/Build下封装了针对不定条件的查询公用方法:

查询list
Build.BuildQueryList(wheres, []string{"*"}, "id desc").Find(&list)构建where条件
Build.BuildWhere(database.DB, wheres)不定条件更新
Build.BuildUpdates(addressModel, wheres, data)

其中where条件的构建格式如下:

// BuildWhere 构建where条件
//1、and 条件 where := []interface{}{
//    []interface{}{"id", "=", 1},
//    []interface{}{"username", "chen"},
//}
//2、结构体条件  where := user.User{ID: 1, UserName: "chen"}
//3、in,or 条件 where := []interface{}{
//    []interface{}{"id", "in", []int{1, 2}},
//    []interface{}{"username", "=", "chen", "or"},
//}
//4、map条件  where := map[string]interface{}{"id": 1, "username": "chen"}
//5、and or混合条件  where := []interface{}{
//    []interface{}{"id", "in", []int{1, 2}},
//    []interface{}{"username = ? or nickname = ?", "chen", "yond"},
//}

##项目配置

配置分两块,其中根目录下的.env文件主要配置一些项目基础配置如: 数据库,redis,路由前缀等的配置。
另一块配置在config目录下,使用viper配置,主要配置一些业务逻辑方面的配置

项目启动

如果安装了make环境的直接使用

    make run

没有安装make环境的使用

    go run main.go

项目编译

如果安装了make环境的直接使用

make build

没有安装make环境的使用

go build

项目线上部署

项目默认的端口是8081,将编译后的文件直接拉到线上,创建.env文件,配置config文件,doc文档,storage日志文件即可,部署目录结构如下

config/
drwxr-xr-x  2 root root     4096 Nov 23 18:12 docs/
-rwxr-xr-x  1 root root      232 Nov 23 18:08 .env*
-rwxr-xr-x  1 root root 43204377 Nov 24 11:08 gebi*
-rw-r--r--  1 root root    78227 Nov 24 16:47 gin.log
drwxrwxrwx  3 root root     4096 Nov 23 17:11 storage/

github地址:

https://github.com/MRchenao/gogebi

推荐一款好用的go web项目框架相关推荐

  1. 2023年推荐几款开源或免费的web应用防火墙

    2023年推荐几款开源或免费的web应用防火墙 2023年,数字经济将强势崛起,并且成为新一轮经济发展的动力,传统的黑客破坏性攻击如CC,转为更隐蔽的如0day进行APT渗透.所以无论私有服务器还是云 ...

  2. 几款常用的高质量web前端框架

    Web前端框架就是为了节约开发成本和时间,一般开发一个项目都会用到前端框架(除非自己有前端开发团队),根据我经验找的几款web前端框架做出了分析.都是个人意见,仁者见仁智者见智. QUICK UI Q ...

  3. 几款常用的高质量Web前端框架!

    近年来,Web前端技术的发展速度快得让人窒息,特别是最近几年一代又一代的变革一次又一次的创造.各大巨头又纷纷把技术转向HTML5和CSS3,各种企业级框架如雨后春笋般涌现. 那么今天就给大家介绍几个在 ...

  4. 从零开始写javaweb框架笔记2-搭建web项目框架

    在前面我们已经创建了一个maven项目,但是pox.xml中还没有任何的maven依赖,随后会添加一些java web所需的依赖.在添加java web的依赖之前,我们需要把maven项目转换为jav ...

  5. 推荐一款超牛逼的Web SSH 客户端工具

    webssh这个工具可以干啥: 在linux机器上安装python环境,并且使用命令pip3 install webssh,装上这个模块** 我们就可以在l浏览器web页面登录我们的linux机器,是 ...

  6. 推荐一款快速开发平台,web中最好的快速开发平台

    力软快速开发平台是力软自主开发的基于SOA面向服务的应用系统开发平台,可以方便快捷的搭建企业.医院.工厂.学校等行业的企业级运营管理平台.平台采用.net.技术架构,webapi服务搭建. 力软快速开 ...

  7. 推荐10款GitHub中高价值的PHP项目(值得收藏)

    一.码小六 - GitHub 代码泄露监控系统 码小六是一款 GitHub 代码泄露监控系统,通过定期扫描 GitHub 发现代码泄露行为,为企业安全保驾护航! Github链接:https://gi ...

  8. 网站安全检测:推荐 8 款免费的 Web 安全测试工具

    随着 Web 应用越来越广泛,Web 安全威胁日益凸显.黑客利用网站操作系统的漏洞和 Web服务程序的 SQL 注入漏洞等得到 Web 服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严 ...

  9. 推荐一款自己常用的web前端框架

    不知道现在大家使用的web前端框架都是什么?也许有人和我一样会想到jQuery,但今天给大家介绍的确实另外一款比较受欢迎的web前端框架,把我用的体验和大家分享一下,希望这款web前端框架能够被大家认 ...

最新文章

  1. 2022-2028年中国低氧铜杆行业市场研究及前瞻分析报告
  2. lower_bound和 upper_bound 用法(STL)
  3. 如果我要...(开发版)
  4. App设计灵感之十二组精美的租车类App设计案例
  5. ElasticSearch基本插件head
  6. SQL Server MDS(主数据服务)介绍
  7. shell mysql备份脚本_mysql备份脚本(shell)
  8. java-----任意进制间的转换
  9. 微服务乱码_本地正常服务器乱码
  10. 证明$r(A^TA) = r(A)$
  11. 惠康游戏手柄 WE-8400 Windows 10 驱动教程
  12. ISO18000-6C超高频RFID蓝牙写卡器HX9816UBT上位机命令数据块
  13. 盘点常用的IDC综合业务、财务及用户管理平台
  14. VLAN间路由的配置(一)普通VLAN间路由的配置
  15. 淘宝双十一自动做任务方案
  16. 纳什均衡定义、举例、分类
  17. ​LeetCode刷题实战603:连续空余座位
  18. 在Linux中传输文件/目录的scp命令
  19. 【Leetcode】1833. 雪糕的最大数量
  20. Java中String接受的最大字符串的长度

热门文章

  1. 《事半功倍读书法》读书笔记
  2. 编程培训c语言,最新C语言编程培训
  3. 【物联网】给我们带来的改变
  4. Gem5模拟器 for Ubuntu20.04
  5. Selection Sort
  6. 从Word文档中提取嵌入对象
  7. “在中国 为中国”战略升级 戴尔今年的DTF惊喜太多
  8. html怎么去掉已经默认的背景,css该怎么去掉背景颜色
  9. Apache Doris性能优化之Join Reorder和Doris Join调优原则
  10. 【微信小程序控制硬件 第13篇】安信可B站直播学习总结,微信小程序MQTT远程控制ESP8266 NodeMCU,谈谈微信生态那些事;