跳至主要內容

go-admin 学习指南

程序员李某某原创Go脚手架goadmin大约 4 分钟

go-admin 学习指南

参考资料

快速启动

go-admin是一个前后端分离的项目,所以需要分别下载 前端项目 go-admin-uiopen in new window后端项目 go-adminopen in new window ,下面分为两个阶段分别说明前端项目 go-admin-uiopen in new window后端项目 go-adminopen in new window的快速启动;

前端 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在创建单列索引的时候对列的长度是有限制的myisaminnodb存储引擎下长度限制分别为1000 bytes767 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:检查接口信息是否保存到数据库,没有保存的会插入

进入接口管理,根据地址模糊查询,编辑接口信息(名称、类型)

菜单管理

先认识下页面整体布局

image-20240112114222402

编辑 生成代码->生成配置 自动生成的菜单配置

配置权限

角色管理

用户管理

上次编辑于:
贡献者: ext.liyuanhao3,李元昊