gin框架-简单路由

92 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1、路由概述

路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。

这就不得不提restful架构了,在 RESTful 架构中,每个网址代表一种资源(也是每一个URI),不同的请求方式表示执行不同的操作:

POST:从服务器创建一个资源
GET: 从服务器取出资源
PUT: 客户端提供更新后的资源给服务器
DELETE:删除服务器资源

2、配置路由(使用postman测试)

1、简单配置

GET:
 r.GET("/url",function)
 
r.GET("/hello", func(c *gin.Context) { 
c.String(200, "Get")
})

POST:
r.POST("/url",function)
//与get类似

PUT:
r.PUT("/url",function)

DELETE:
r.DELETE("/url",function)

2、使用GET请求在路径获取值

1、启动项目
2、在浏览器输入 域名/hello?id=10
r.GET("/hello", func(c *gin.Context) { 
aid := c.Query("id") //截取路径id
c.String(200, "id=%s", id) 
})

3、动态路由

动态路由应用广泛,比如需要某一个商品详情,我们就可以通过动态路由,使用商品的id查询商品的数据,然后传送到前端。

// 在浏览器输入: 域名/hello/10
r.GET("/hello/:id", func(c *gin.Context) {
id := c.Param("id")  //截取路径上的id
c.String(200, "helloID=%s", id) })

4、c.String() c.JSON() c.JSONP() c.XML() c.HTML()的数据

gin框架一般使用c.String() c.JSON() c.JSONP() c.XML() c.HTML()返回数据

1、返回一个字符串

r.GET("/hello", func(c *gin.Context) {
    aid := c.Query("id")
    c.String(200, "id=%s", id)
})

返回一个 JSON 数据

func main() {
r := gin.Default()
// gin.H 是 map[string]interface{}的缩写
r.GET("/helloJSON", func(c *gin.Context) {
// 方式一:自己拼接 JSON
c.JSON(http.StatusOK, gin.H{"message": "Hello world!"
 })
}) 
r.GET("/moreJSON", func(c *gin.Context) { 
// 方法二:使用结构体
    var msg struct {
         Name string `json:"user"`
         Message string
       
        }
         msg.Name = "JSON数据"
         msg.Message = "Hello JSONDATA"
         
 c.JSON(http.StatusOK, msg) }) 
 
 r.Run(":8080") }

其他几个和这两个差不多,就不啰里啰唆了。

3、渲染模板

router.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "default/index.html", //渲染到哪个页面
map[string]interface{}{ "msg": "hello template" }) }) //数据