当前位置: 首页 > article >正文

go语言gin框架学习

让框架去做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那样的路由分组需要自己写

http://www.kler.cn/a/3075.html

相关文章:

  • Linux 6.x版本内核的proc目录组织
  • OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境
  • Go的内存逃逸
  • Redis学习之哨兵二
  • [权限提升] 常见提权的环境介绍
  • 关联传播和 Python 和 Scikit-learn 实现
  • Android开发-Android UI与布局
  • vue里面的 Object.defineProperty 和 Proxy使用优势
  • 【AR技术】AR教学机器人
  • 【Python语言基础】——Python 字典方法
  • 用Node.js实现一个HTTP服务器程序(文件服务器)
  • 【K哥爬虫普法】大众点评VS百度地图,论“数据权属”对爬虫开发的罪与罚!
  • JQuery
  • ESP32设备驱动-HDC1080温度湿度传感器驱动
  • 【Pytorch】利用PyTorch实现图像识别
  • 标准I/O
  • 用Pytorch搭建一个房价预测模型
  • 关于学习的一些网站(自用)
  • 【C++】内联函数inline
  • 数据结构与算法——堆的基本存储
  • 电路设计的一些概念
  • 华为OD机试题,用 Java 解【卡片组成的最大数字】问题 | 含解题说明
  • 8个你一看就觉得很棒的Vue开发技巧
  • Liunx下的进程程序替换
  • GitHub Actions工作流搭建
  • jmeter 响应时间rt很小,但是tps也很小jmeter,脚本处理,千万不要用js