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

golang gin框架1——简单案例以及api版本控制

gin框架

gin是golang的一个后台WEB框架

简单案例

package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {r := gin.Default()r.GET("/ping", func(c *gin.Context) {//以json形式输出,还可以xml protobufc.JSON(http.StatusOK, gin.H{"message": "pong",})})r.Run()  // listen and serve on 0.0.0.0:8080
}

上面代码是gin github 上的一个简单案例,Gin-Context 实现了对request和response的封装,是Gin的核心实现之一,学习使用gin框架就是学习使用Context包的过程。其内部封装了request 和response 过程中的数据

在这里插入图片描述

API以及版本控制

gin可以通过api分组的形式控制API版本

先看下面两组api

user.go

package userimport ("github.com/gin-gonic/gin""net/http"
)func Add(c *gin.Context) {// 都是gin.context作为入参c.JSON(http.StatusOK, gin.H{"method": c.Request.Method,"path": c.Request.URL.Path,})
}func Get(c *gin.Context) {// 都是gin.context作为入参c.JSON(http.StatusOK, gin.H{"method": c.Request.Method,"path": c.Request.URL.Path,})
}

user_v2.go

package userimport ("github.com/gin-gonic/gin""net/http"
)func AddV2(c *gin.Context) {// 都是gin.context作为入参c.JSON(http.StatusOK, gin.H{"method": c.Request.Method,"path": c.Request.URL.Path,})
}func GetV2(c *gin.Context) {// 都是gin.context作为入参c.JSON(http.StatusOK, gin.H{"method": c.Request.Method,"path": c.Request.URL.Path,})
}

路由初始化

package routersimport ("github.com/gin-gonic/gin""goGin/user"
)
func InitRouters(r *gin.Engine) {//使用路由分组api := r.Group("api")initUser(api)
}
func initUser(group *gin.RouterGroup) {// 路由分组v1 := group.Group("/v1"){// /api/v1/course// 路径携带参数v1.GET("/user/:id", user.Get)v1.POST("/user/:id", user.Add)}// v2版本v2 := group.Group("v2"){v2.GET("/user/:id", user.GetV2)v2.POST("/user/:id", user.AddV2)}
}
package mainimport ("github.com/gin-gonic/gin""goGin/routers"
)func main() {r := gin.Default()routers.InitRouters(r)r.Run(":8080")  // listen and serve on 0.0.0.0:8080
}

测试
在这里插入图片描述

http://www.lryc.cn/news/183343.html

相关文章:

  • Redisson—分布式对象
  • alsa pcm接口之在unix环境的传输方法
  • 小谈设计模式(20)—组合模式
  • sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第三周测验
  • 一文详解动态链表和静态链表的区别
  • [C国演义] 第十三章
  • <二>Qt斗地主游戏开发:过场动画的实现
  • 链式法则(Chain Rule)
  • AUTOSAR COM模块框架梳理
  • 详细介绍区块链之挖矿
  • 华为OD机试真题-路灯照明问题(Java/C++/Go/Python)
  • 嵌入式技术面试基本规则
  • osg实现自定义插件读取自定义格式的模型文件到场景
  • redis进阶
  • (一)正点原子STM32MP135移植——准备
  • Kotlin的关键字 lateinit 和 lazy
  • 阿里云服务器ECS详细介绍_云主机_服务器托管_弹性计算
  • 12、建立健全人员培训体系
  • 代码随想录算法训练营第五十九天 | 647. 回文子串 516.最长回文子序列
  • React Redux
  • StreamingLLM - 处理无限长度的输入
  • [Linux 命令] nm 详解
  • 好文学作品的鉴赏标准
  • 智慧公厕:将科技融入日常生活的创新之举
  • ROS(0)命令及学习资源汇总
  • NodeMCU ESP8266开发流程详解(图文并茂)
  • 【最终版】tkinter+matplotlib实现一个强大的绘图系统
  • Postman使用实例
  • 【ES的优势和原理及分布式开发的好处与坏处】
  • Autosar诊断实战系列23-CanTp半/全双工及相关工程问题思考