首页 分享 基于go语言,手把手教你实现后端管系统框架

基于go语言,手把手教你实现后端管系统框架

来源:花匠小妙招 时间:2024-12-07 19:01

今天要完成的任务是使用 go 来开发一个后台管理的框架系统,我们初步评估一下需求,要实现一个简单的后端管理框架,可能需要有一下几个方面需要考虑:

上手开发简单,最好是专注于业务,别让我做什么配置,我很懒的。数据持久化,因为需要涉及到数据的管理方面。权限管理,资源的访问需要有一定的访问权限控制,否则,一些敏感信息泄露了都不知怎么搞的。一个轻量化的 http 服务框架,当然,自己从零开始来就不是太有必要了,直接是一个 gin 吧,又不是不能用

另外,作为一个会使用 docker 的前端开发,哦不,全栈开发,我们肯定是需要用 Docker 来部署的,而且为了极大的降低开发难度,我们还需要提供一个 docker-compose ,这样开发人员只需要 一个 docker-compose up 命令,就可以专注于开发了,根本就不用关心怎么配置环境,只需要关注与自身的业务逻辑开发。

比如,写几个 model,建几个数据库的表,如果哪里查询性能出现问题,考虑增加下 redis,当然,我们的 docker-compse 就不要过于大而全了,点到为止,我们之走到 MySQL 把,剩下的,如微服务监控,健康监测,消息队列,Kafka 之类的,等你觉得有必要了,在慢慢的往上面堆吧,一个大而全的项目,往往不一定是最适合你的项目,你应该做的事情是先选型,选型!!!好了,废话少说,准备开始了

开始动手

为了对于没有接触过后端的,比如3 年前的我(而且大概率,用 go 多年的人也懒得看这些基础的文章),理解是怎么创建一个 go 项目并且 run 起来的,还是多废一些口舌,你得先到 Go 官网去安装 Go 的环境,注意你的系统和 cpu 架构。

创建项目结构

在你的工作目录中创建一个新的文件夹作为项目的根目录。

mkdir my-admin-system cd my-admin-system

Go模块

go mod init my-admin-system

这个过程会生成一个文件,go.mod,去检查下有没有,没有请自行 Google,一般这个过程不会出现问题。

安装依赖

主要是 web 框架,orm 库和 数据库driver

go get -u github.com/gin-gonic/gin go get -u gorm.io/gorm go get -u gorm.io/driver/mysql

这里会在你的项目下产生另外一个文件,go.sum ,你会好奇,你安装的这些库都跑哪里去了,问得好,但我也懒得解释太多,安装到你go 环境所在的目录那里了,这些是可以给到其他项目复用的,和 node.js 不同 ,项目下面会安装到 node_modules 下面,每个项目独立,有点像是自己的沙箱一样。总之各有各的好,不能说哪种更加科学。整个项目的结构如下图所示:

注意,再次强调:不要把你的数据库密码直接写到项目里面,请使用.env 的方式,这是一个好的习惯

写一个 main.go,作为入口,和一个 user.go,用来查询用户信息吧,简化点,这里之给出主要代码

func main() {// 从环境变量获取数据库连接信息dbHost := os.Getenv("DB_HOST")dbUser := os.Getenv("DB_USER")dbPassword := os.Getenv("DB_PASSWORD")dbName := os.Getenv("DB_NAME")// 初始化数据库连接dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPassword, dbHost, dbName)db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})if err != nil {panic("failed to connect database")}// 迁移 schemadb.AutoMigrate(&models.User{})// 设置路由r := gin.Default()// 用户路由r.POST("/users", func(c *gin.Context) {var user models.Userif err := c.ShouldBindJSON(&user); err != nil {c.JSON(400, gin.H{"error": err.Error()})return}db.Create(&user)c.JSON(201, user)})r.GET("/users", func(c *gin.Context) {var users []models.Userdb.Find(&users)c.JSON(200, users)})// 启动服务器r.Run() // 默认监听并在 0.0.0.0:8080 上启动服务 }

编写 Dockerfile

# 使用官方Go镜像作为构建环境 FROM golang:1.21.5 as builder # 设置工作目录 WORKDIR /app # 复制go.mod和go.sum文件 COPY go.mod go.sum ./ # 下载所有依赖 RUN go mod download # 复制源代码 COPY . . # 构建可执行文件 RUN CGO_ENABLED=0 GOOS=linux go build -v -a -installsuffix cgo -o my-admin-system . # 使用scratch作为运行环境 FROM scratch # 从构建器中复制可执行文件 COPY --from=builder /app/my-admin-system . # 运行可执行文件 CMD ["./my-admin-system"]

然后是 docker-compose.yml

version: '3.8' services: app: build: . ports: - "8080:8080" depends_on: - db environment: - DB_HOST=${DB_HOST} - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} - DB_NAME=${DB_NAME} db: image: mysql:5.7 ports: - "3306:3306" environment: - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - db-data:/var/lib/mysql volumes: db-data:项目启动起来

docker-compose up --build,走你,如下,项目就启动起来了:

本来,我们是需要使用 React或者Vue这样的框架来写前端页面来展示对用户的一系列管理,这里也偷懒了,直接使用 postman,或者,也懒得使用 postman 了,直接curl命令行搞起增加一个 user,又不是不能用。。

curl -X POST -H "Content-Type: application/json" -d '{"name":"brzhang","email":"brzhang@example.com","password":"secret"}' <http://localhost:8080/users>

如下,手起刀落,我们看到好像是 ok 了。

命令行的返回我们看到插入成功了,那么 /users 接口的 get 方法来验证下,我们刚才增加的用户有没有呢,浏览器直接输入 http://localhost:8080/users 走你。

总结

我们实现了一个后端管理系统的架子,基本上实现基本的 CURD 操作没有什么大的问题了,而且,部署开发起来简直不要太方便,因为篇幅有限,这地方实现登录、权限控制就交给读者了,要做成一个大而全的管理系统,通过一篇文章打透就有点贪多了,总体来讲,本文算是起一个头,带一个思路罢了。

思考环节:

你知道有那些后端代码框架适合做后端管理系统的吗?strapi.io 可以了解一下。实现权限管理的经典工具有哪些?https://github.com/casbin/casbin 了解一下,经典的 RBAC 实现

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

相关知识

基于flask框架花店销售系统 (python+mysql+论文)
基于flask框架花卉艺术交流平台设计与实现 (python+mysql+论文)
基于flask+vue框架的网上花店销售管理系统[开题+论文+程序]
基于JavaWeb的植物信息管理系统设计与实现开题报告
(开题)flask框架仓库物流信息管理系统设计和实现(程序+论文+python)
框架鲜花商城系统测试
Java实现鲜花销售系统
基于SpringBoot的花店管理系统
基于ssm+vue基于框架的同城快递配送平台的设计与实现(开题报告+源码+论文)
树莓派智能花卉浇灌系统设计与实现

网址: 基于go语言,手把手教你实现后端管系统框架 https://www.huajiangbk.com/newsview949080.html

所属分类:花卉
上一篇: SpringBoot外卖鲜花系统
下一篇: 鲜花电子券兑换系统

推荐分享