Bootstrap

Gin 框架中的路由

1、路由概述

        路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法(GET、POST 等)
组成的,涉及到应用如何响应客户端对某个网站节点的访问。
RESTful API 是目前比较成熟的一套互联网应用程序的 API 设计理论,所以我们设计我们的路
由的时候建议参考 RESTful API 指南。
在 RESTful 架构中,每个网址代表一种资源,不同的请求方式表示执行不同的操作:
GET SELECT
从服务器取出资源(一项或多项)
POST CREATE
在服务器新建一个资源
PUT UPDATE
在服务器更新资源(客户端提供改变后的完整资源)
DELETE DELETE
从服务器删除资源

2、简单的路由配置

        简单的路由配置(可以通过 postman 测试)
当用 GET 请求访问一个网址的时候,做什么事情:

r.GET(" 网址 ", func(c *gin.Context) {
c.String(200, "Get")
})

 当用 POST 访问一个网址的时候,做什么事情:

r.POST(" 网址 ", func(c *gin.Context) {
c.String(200, "POST")
})

 当用 PUT 访问一个网址的时候,执行的操作:

r.PUT(" 网址 ", func(c *gin.Context) {
c.String(200, "PUT")
})

 当用 DELETE 访问一个网址的时候,执行的操作:

r.DELETE(" 网址 ", func(c *gin.Context) {
c.String(200, "DELETE")
})

 路由里面获取 Get 传值
域名/news?aid=20

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

 动态路由
域名/user/20

r.GET("/user/:uid", func(c *gin.Context) {
uid := c.Param("uid")
c.String(200, "userID=%s", uid)
})

 3、 c.String() c.JSON() c.JSONP() c.XML() c.HTML()

返回一个字符串

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

 返回一个 JSON 数据

func main() {
r := gin.Default()
// gin.H map[string]interface{} 的缩写
r.GET("/someJSON", 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
Age
int
}
msg.Name = "雨轩编程 "
msg.Message = "Hello world!"
msg.Age = 18
c.JSON(http.StatusOK, msg)
})
r.Run(":8080")
}

 JSOPN

func main() {
r := gin.Default()
r.GET("/JSONP", func(c *gin.Context) {
        data := map[string]interface{}{
        "foo": "bar",
}
// /JSONP?callback=x
// 将输出: x({\"foo\":\"bar\"})
c.JSONP(http.StatusOK, data)
})
// 监听并在 0.0.0.0:8080 上启动服务
r.Run(":8080")
}

 返回 XML 数据

func main() {
r := gin.Default()
// gin.H map[string]interface{} 的缩写
r.GET("/someXML", func(c *gin.Context) {
// 方式一:自己拼接 JSON
c.XML(http.StatusOK, gin.H{"message": "Hello world!"})
})
r.GET("/moreXML", func(c *gin.Context) {
        // 方法二:使用结构体
        type MessageRecord struct {
                Name string
                Message string
                Age int
        }
        var msg MessageRecord
        msg.Name = "雨轩编程 "
        msg.Message = "Hello world!"
        msg.Age = 18
        c.XML(http.StatusOK, msg)
        })
r.Run(":8080")
}

 渲染模板

router.GET("/", func(c *gin.Context) {
        c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{
        "title": "前台首页 "
        })
})

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;