本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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" }) }) //数据