让框架去做http解包封包等,让我们的精力用在应用层开发
MVC模式
M: model,操作数据库gorm
view 视图 处理模板页面
contoller 控制器 路由 +逻辑函数
解决gin相关代码飘红的问题
记得启用gomodule
go env -w GO111MODULE=on
然后到相应目录下执行 go mod init xxx
go mod tidy
这样应该可以解决代码飘红,说找不到对应包的问题
由于墙的原因 需要更换代理请执行 go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
一、初步使用
- 搭建好go的环境,目录结构如下
//main.go
package main
import "github.com/gin-gonic/gin"
func main() {
gin.Default()
}
go mod init quickstart
go mod tidy
- 如果下载失败,换成golang官方源试试
go env -w GOPROXY=https://proxy.golang.org,direct
- 搭建一个基础的后端
//main.go
package main
import "github.com/gin-gonic/gin"
func getuser(ctx *gin.Context){
ctx.JSON(200,gin.H{
"username":"you",
})
}
func main() {
//获取引擎对象,即路由对象
r:=gin.Default()
//路由映射函数
r.GET("/user",getuser)
//启动:默认本机8080端口 类似django的runserver
r.Run("127.0.0.1:8081")
}
访问相应路径如下
二、路由系统初识
2.1 服务端对客户端发起各种请求方式的处理
2.1.1 同一个资源的不同请求方式
//路由映射函数同一个路由,不同的方法执行不同的逻辑
r.GET("/book", func(context *gin.Context) {
context.JSON(200,gin.H{
"msg":"查询成功",
})
})
r.POST("/book", func(context *gin.Context) {
context.JSON(200,gin.H{
"msg":"新增成功",
})
})
r.PUT("/book", func(context *gin.Context) {
context.JSON(200,gin.H{
"msg":"修改成功",
})
})
r.DELETE("/book", func(context *gin.Context) {
context.JSON(200,gin.H{
"msg":"删除成功",
})
})
2.1.2 Any
// any请求方式都可以访问
r.Any("/index", func(context *gin.Context) {
context.JSON(200,gin.H{
"msg":"任何方式都可以访问",
})
})
2.1.3 NoRoute
//所有路由都无法访问时,不管何种请求方式,走noroute时返回相应信息
r.NoRoute( func(context *gin.Context) {
context.JSON(404,gin.H{
"msg":"404 not find",
})
})
2.2 路由分组
- gin框架没有像django那样的路由分组需要自己写