go-admin 学习指南
原创Go脚手架goadmin大约 4 分钟
go-admin 学习指南
参考资料
快速启动
go-admin是一个前后端分离的项目,所以需要分别下载 前端项目 go-admin-ui 和 后端项目 go-admin ,下面分为两个阶段分别说明前端项目 go-admin-ui和后端项目 go-admin的快速启动;
前端 go-admin-ui
下载
git clone https://github.com/go-admin-team/go-admin-ui.git
## 安装依赖
cd ./go-admin-ui
npm i
## 上述两种安装报错或者node16+使用yarn进行安装
yarn
版本问题
nvm是一个很好的node版本管理工具,详见 nvm使用说明
启动
npm run dev
后端 go-admin
下载
mkdir goadmin_test
cd ./goadmin_test
git clone https://github.com/go-admin-team/go-admin.git
cd ./go-admin
## 安装依赖
go mod tidy
## 编译
go build
注意
- 执行
go mod tidy报错go.mod file indicates go 1.21, but maximum version supported by tidy is 1.19- 修改
go.mod中的go版本为你本地安装的版本,如我的将go 1.21改为go 1.19
- 修改
- 执行
go build报错package xxx is not in GOROOT or GOPATH或者cannot find package “xxx“ in any of- 找了很多方法没能解决,目前版本是1.19.5只能升级了go到最新版本1.21.5
配置数据源
## config/settings.yml
database:
# 数据库类型 mysql, sqlite3, postgres, sqlserver
# sqlserver: sqlserver://用户名:密码@地址?database=数据库名
driver: mysql
# 数据库连接字符串 mysql 缺省信息 charset=utf8&parseTime=True&loc=Local&timeout=1000ms
source: root:root@tcp(127.0.0.1:3306)/go_admin_test?charset=utf8&parseTime=True&loc=Local&timeout=1000ms
gen:
# 代码生成读取的数据库名称
dbname: go_admin_test
frontpath: D:\VSCodeProjects\go-admin-ui\src
注意
Mysql 版本 8.0+ ,在此版本下最优; 其他低版本的会出现Error 1071: Specified key was too long; max key length is 1000 bytes等这类问题;请根据本地数据库版本进行对应修改
报错原因:
mysql在创建单列索引的时候对列的长度是有限制的myisam和innodb存储引擎下长度限制分别为1000 bytes和767 bytes。
解决方法:
# 编辑配置文件vim /etc/my.cnf
# 在[mysqld] 下面添加MySQL默认的引擎设置default-storage-engine=InnoDB
# 重启服务service mysqld restart
删除库中迁移出的表,再次执行迁移命令,即可成功
创建数据库
数据库安装就不在此介绍了,详见 Linux 软件安装
新建 go_admin_test 数据库
数据初始化
# 初始化
# macOS or linux 下使用
go run main.go migrate -c config/settings.yml
# windows 下使用
go run main.go migrate -c config\settings.yml
注意
若按照官方文档的做法,配置文件为settings.dev.yml,上述命令记得替换
启动服务
# 启动服务
# macOS or linux 下使用
go run main.go server -c config/settings.dev.yml
# windows 下使用
go run main.go server -c config\settings.yml
后端基础
hello go-admin
handler
// go-admin/app/admin/apis/article.go
package apis
import (
"github.com/gin-gonic/gin"
"go-admin/common/apis"
)
type Article struct {
apis.Api
}
// GetArticleList 获取文章列表
func (e Article)GetArticleList(c *gin.Context) {
err := e.MakeContext(c).
Errors
if err != nil {
e.Logger.Error(err)
return
}
e.OK("hello world !","success")
}
router
// go-admin/app/admin/router/article.go
package router
import (
"go-admin/app/admin/apis"
"github.com/gin-gonic/gin"
jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
)
func init() {
routerCheckRole = append(routerCheckRole, registerArticleRouter)
}
// 需认证的路由代码
func registerArticleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
api:= apis.Article{}
r := v1.Group("")
{
r.GET("/articleList", api.GetArticleList)
}
}
运行访问 http://localhost:8000/api/v1/articleList
代码生成
检查配置
- 读取数据库下的所有表
- frontpath 是前端代码存放位置,官方建议 前后端在同一目录下 也是为了这里方便不用再修改
建表
CREATE TABLE `article` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '编码',
`title` varchar(128) DEFAULT NULL COMMENT '标题',
`author` varchar(128) DEFAULT NULL COMMENT '作者',
`content` varchar(255) DEFAULT NULL COMMENT '内容',
`status` int(1) DEFAULT NULL COMMENT '状态',
`publish_at` timestamp NULL DEFAULT NULL COMMENT '发布时间',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
`deleted_at` timestamp NULL DEFAULT NULL,
`create_by` int(11) unsigned DEFAULT NULL,
`update_by` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_article_deleted_at` (`deleted_at`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='文章';
生成代码
在 开发工具中 找到 代码生成 ,点击导入,选择对应的表
编辑:
代码生成:api、router、service、model、dto、js、vue
生成配置:生成关于菜单栏的配置
菜单绑定接口
接口管理
首先需要将新增的 api 自动托管到接口管理中
go run main.go server -c config/settings.yml -a true
-a true:检查接口信息是否保存到数据库,没有保存的会插入
进入接口管理,根据地址模糊查询,编辑接口信息(名称、类型)
菜单管理
先认识下页面整体布局

编辑 生成代码->生成配置 自动生成的菜单配置
配置权限
角色管理
用户管理
