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

Gin使用

Gin

  • gin是小而精的框架
  • beego是个大而全的框架

Start

package mainimport "github.com/gin-gonic/gin"func main() {
//实列化一个serverrouter := gin.Default()//rnew := gin.New()//使用new就没有日志和recoveryrouter.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})//设置端口router.Run("7171") // 默认监听 0.0.0.0:8080
}

Route

  • 基本的路由
router.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})router.GET("/hello", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})
  • 路由分组
api := router.Group("/api"){api.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "GROUP",})})}
  • URL中的变量
//   /value/:id/*action  /value/:id/hello/wenjian  ⇒ 得到的是 hello/wenjianrouter.GET("/value/:id", func(c *gin.Context) {id := c.Param("id")c.JSON(200, gin.H{"message": id,})})
  • 路由的命名可能会出现conflict 要去处理
  • 路由参数验证

type Login struct {User     string `form:"user" json:"user" xml:"user"  binding:"required"`Password string `form:"password" json:"password" xml:"password" binding:"required"`
}var json Loginif err := c.ShouldBindJSON(&json); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}
  • 获取路由中的参数
//将结构体绑定
c.Bind(&b)
//这个带有验证功能
c.ShouldBindJSON(&json)
//从get里面获取
id := c.Query("id")
page := c.DefaultQuery("page", "0")
//从post中获得
page := c.DefaultPostForm("page", "0")
name := c.PostForm("name")
message := c.PostForm("message")

返回格式

JSON
//返回一个结构体
c.JSON(http.StatusOK,MSG)
c.PureJSON(200,gin.H{})
PROTOBUF
	router.GET("/protobuf", func(c *gin.Context) {user := proto.Teacher{Name:    "sun",Courses: []string{"go", "java"},}c.ProtoBuf(200, &user)})
  • 验证器切换中文

中间件

func Logger() gin.HandlerFunc {return func(c *gin.Context) {t := time.Now()// 设置 example 变量c.Set("example", "12345")// 请求前c.Next()// 请求后latency := time.Since(t)log.Print(latency)// 获取发送的 statusstatus := c.Writer.Status()log.Println(status)}
}
http://www.dtcms.com/a/589553.html

相关文章:

  • SpringAI整合deepseek的一个简单入门案例
  • 突破智能体训练效率瓶颈:Tree Training如何通过共享前缀重用实现3.9倍加速?
  • Java面试题及答案整理( 2025年11月更新版,持续更新...)
  • 定制营销型网站公司色目人
  • 网站普查建设背景网站推广建议
  • 做网站永久嘟嘟浏览器
  • PS1模拟器 DuckStation更新最新版整合 下载即玩 附PS1Bios/游戏/金手指 安卓版+电脑版
  • Java复习事务相关 mysql事务隔离级别 spring事务的传播机制 2025年11月9日
  • 做网站公司排行榜洛阳做网站公司电话
  • 如何发布网站站长是什么职位
  • Vue基本路由
  • 基于springboot的作业管理系统设计与实现
  • Tauri开发手记——1.开发环境
  • 天翼云 ECS 弹性云主机的IP地址无法访问,无法访问 ECS 的网站,解决方案(随手记)
  • 名费网站制作视频教程淘宝代运营公司哪家好
  • 【开题答辩全过程】以 基于springboot美食分享网站为例,包含答辩的问题和答案
  • 福永自适应网站建智能建站系统官网
  • 【FPGA+DSP系列】——MATLAB simulink仿真整流电路
  • (* clock_buffer_type=“NONE“ *)
  • 上海网站建设最佳方案本地wordpress 上传到服务器
  • 消除FFmpeg库的SONAME依赖
  • 网站制作金华公司电话免费培训seo
  • Qt编程Action:Qt的自动反色方案
  • 福田网站建设费用明细国际消息新闻
  • 网站备案失败wordpress 模版标签
  • Linux开发工具(4)
  • 怎么办一个网站wordpress个人中心无法登录
  • U-Net:用于生物医学图像分割的卷积网络,经典中的经典,后续所有创新改进的起点
  • 基于n8n构建最新资讯自动获取:从RSS抓取到智能分析实践
  • 深圳注明企业网站设计山西网站建设方案