gin初始化项目

gin初始化项目

初始化项目

  1. 初始化 go 项目
shell
go mod init <program-name>
  1. 配置国内镜像
shell
go env -w GOPROXY=https://goproxy.io,direct
  1. 引入 gin 框架
shell
go get -u github.com/gin-gonic/gin
  1. 编写一个网络请求
go
package main

import "github.com/gin-gonic/gin"

func main() {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.JSON(200, gin.H{
      "message": "ping",
    })
  })
  r.Run(":9999") // 在9999端口启动服务,不填默认在8080端口启动
}
  1. 启动项目
shell
go run main.go

网站目录初始化

定义一个初始化的项目目录,方便后期开发

txt
--| api/          # 放置api接口,相当于controller
  --| v1/
--| config/       # 放置网站配置文件
  --| config.ini
--| middleware/   # 中间件
--| model/        # 数据模型
--| routes/       # 网站路由
--| upload/       # 上传静态文件托管
--| utils/        # 公共函数
--| web/          # 前端静态文件托管
--| main.go       # 项目入口

使用 ini 做网站配置

shell
go get -u gopkg.in/ini.v1
ini
# 网站服务配置
[server]
AppMode = debug # debug or server
HttpPort = :9999
JWTToken = ajlsdflasjdjlasjdlf

# 数据库配置
[database]
DB = mysql
DBHost = localhost
DBPort = 3306
DBUser = root
DBPwd = admin888
DBName = ginblog

router 分组

go
package main

import (
  "github.com/gin-gonic/gin"
  v1 "whbbit.cn/gin/router/v1"
)

func main() {
  r := gin.Default()
  v1.InitRouter(r)
  r.Run(":9999")
}

使用 gorm 操作 mysql 数据库

shell
go get -u gorm.io/gorm
shell
go get -u gorm.io/driver/mysql

配置 gorm 连接数据库

创建数据模型

go
package model

import "gorm.io/gorm"

type User struct {
  gorm.Model
  Username string `gorm:"type:varchar(20);not null" json:"username"`
  Password string `gorm:"type:varchar(20);not null" json:"password"`
  Role     int    `gorm:"type:int" json:"role"`
}
go
package model

import "gorm.io/gorm"

type Category struct {
  gorm.Model
  Name string `gorm:"varchar(20);not null" json:"name"`
}
go
package model

import "gorm.io/gorm"

type Article struct {
  gorm.Model
  Title    string   `gorm:"varchar(100);not null" json:"title"`
  Body     string   `gorm:"longtext;not null" json:"body"`
  Desc     string   `gorm:"varchar(200);" json:"desc"`
  Cover    string   `gorm:"varchar(100);" json:"cover"`
  Category Category `gorm:"foreignKey:Cid"`
  Cid      int      `gorm:"int;not null" json:"cid"`
}
MIME类型和blob
git统计代码提交数量

评论区

评论加载中...