goWeb
基本项目框架:https://gitee.com/lxjblog/gin-study
1、go 安装
下载安装包
golang 下载地址:https://golang.google.cn/dl/

下载完成之后直接安装即可,安装完成之后输入 go version 测试

配置环境变量
新增 GOPATH 和 GOROOT 变量
# GOROOT 指定安装目录
GOROOT D:\Program Files\GO
# GOPATH 需要新建一个目录,用于存放安装的包
GOPATH D:\Program Files\GoWorks
在终端输入 go env 查看环境变量内容

可以提前设置如下配置
# 配置代理,方便后续下载包
go env -w GO111MODULE=off
GOPROXY=https://proxy.golang.org,direct
# 指定 bin 目录,用于存放安装包生成的 .exe 执行文件
go env -w GOBIN=D:\Program Files\GoWorks\bin
2、goLand 工具
IDEA 同系列产品,在官网中下载安装之后,寻找激活码激活即可

3、web 开发
概况
安装依赖
goweb 开发中比较常用的包是 gin
# gin
gin get github.com/gin-gonic/gin
基本使用
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r := gin.Default()
// 设置路由
r.GET("/hello", func(context *gin.Context) {
context.JSON(http.StatusOK, gin.H{
"data": "hello world",
} )
} )
// 指定端口并启动
r.Run(":9000")
}
路由配置
指定请求方式
func main() {
r := gin.Default()
r.GET("/hello", func)
r.POST("/hello", func)
r.DELETE("/hello", func)
r.PUT("/hello", func)
……
}

通过路由组区分
apiRouter := r.Group("/user")
{
apiRouter.GET("/getByName", service.GetUserByName)
apiRouter.POST("/add", service.AddUser)
}
返回参数
返回 JSON 类型
ctx.JSON([状态码], [object])
apiRouter.GET("/all", func(ctx *gin.Context) {
ctx.JSON(http.StatusOK, gin.H{
"data": "hello",
} )
} )

返回 String 类型
r.GET("/hello", func(ctx *gin.Context) {
ctx.String(http.StatusOK, "返回结果:%s", "hello")
} )


除此之外还可以返回 HTML 等各种类型

请求参数获取
通过 ? 追加参数
请求格式:/hello?name=”xiaojiang”,通过 Query 获取,还可以使用 DefaultQuery 获取默认值
r.GET("/hello", func(ctx *gin.Context) {
name := ctx.Query("name")
age := ctx.DefaultQuery("age", 18)
ctx.String(http.StatusOK, "hello %s", name)
} )



将参数写在路径中
r.GET("/hello/:name", func(ctx *gin.Context) {
name := ctx.Param("name")
ctx.String(http.StatusOK, "hello %s", name)
} )


获取 json 格式
可以将 json 解析为 map,也可以直接解析为对象
r.POST("/hello", func(ctx *gin.Context) {
// 解析 JSON,将结果存在 map 中
var m map[string]interface{ }
data, _ := ctx.GetRawData()
_ = json.Unmarshal(data, &m)
ctx.JSON(http.StatusOK, m)
} )
获取 form 表单提交的内容

4、连接数据库
官方文档:https://gorm.io/zh_CN/docs/
安装依赖
# 安装 gorm
go get -u -v http://github.com/jinzhu/gorm
连接数据库
// 建立连接
dB, err := gorm.Open("mysql",
"root:123456@(localhost:3306)/test?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
fmt.Println("连接数据库错误:", err)
return
}
// 开启日志输出
dB.LogMode(true)
CRUD
参考文档
5、swag 接口文档
注释文档:https://swaggo.github.io/swaggo.io/declarative_comments_format/api_operation.html
基本配置
golang 集成 swag 之后,需要通过注释标识
安装依赖
# 安装 swag
go get -u github.com/swaggo/swag/cmd/swag
go get -u github.com/swaggo/gin-swagger
go get -u github.com/swaggo/files
配置主函数的注释
// @title goWeb project
// @version 1.0
// @description this is goWeb server.
// @host 127.0.0.1:9000
func main() {
}
配置实体类返回默认值
type Student struct {
Name string `json:"name" example:"xiaojiang"`
Age int `json:"age" example:"18"`
CreateTime string `json:"createTime" example:"2022/10/27"`
Score float64 `json:"score" example:"90"`
}
配置接口的注释
对于方法的注释,需要在第一行指定方法名
注意:在 golang 中,方法名和变量名的开头需大写,才能被其他方法调用
// SelectAll
// @tags student
// @Summary 获取所有学生
// @Success 200 { array} entity.Student "success"
// @Router /student/all [get]
func SelectAll(ctx *gin.Context) {
data := dao.SelectAll()
response.Success(ctx, data)
}
生成文档
在项目根目录下执行如下指令,如 main 主函数不在根目录下,则需在命令中指定,swag 会根据注释内容自动在项目目录下生成文档内容
# 生成文档
swag init

如果报错,”’swag’ 不是内部或外部命令,也不是可运行的程序“,按照如下步骤:
- 查看是否已经安装了 swag 包
- 查看 GOPAT\bin 目录下是否存在 swag.exe 可执行文件,不存在则复制过去
启动项目
在生成文档之后,需要重新启动项目才可以查看到新的 swag 文档内容
访问地址:http://localhost:9000/swagger/index.html

- 本文链接:https://lxjblog.gitee.io/2022/11/05/goWeb%E5%85%A5%E9%97%A8/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。