路由概述
路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 函数(GET、POST 等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。
RESTful API
RESTful API 是目前比较成熟的一套互联网应用程序的 API 设计理论,所以我们设计我们的路由的时候建议参考 RESTful API 指南。
在 RESTful 架构中,每个网址代表一种资源,不同的请求方式表示执行不同的操作:
请求方式 | 操作 |
---|---|
GET(SELECT) | 从服务器中获取资源 |
POST(CREATE) | 在服务器中创建资源 |
PUT(UPDATE) | 在服务器中更新更改资源 |
DELETE(DELETE) | 在服务器中删除资源 |
创建路由
GET
// GET
r.GET("/GET", func(c *gin.Context) {
c.String(http.StatusOK, "GET")
})
POST
// POST
r.POST("/POST", func(c *gin.Context) {
c.String(http.StatusOK, "POST")
})
PUT
// PUT
r.PUT("/PUT", func(c *gin.Context) {
c.String(http.StatusOK,"PUT")
})
DELETE
// DELETE
r.DELETE("/DELETE", func(c *gin.Context) {
c.String(http.StatusOK, "DELETE")
})
其他创建方法
所有类型
如果同一个地址想要所有类型的请求都支持使用那么可以通过下面代码进行创建
// 接收所有类型请求
r.Any("/Any", func(c *gin.Context) {
c.String(http.StatusOK, "Any")
})
两个或多个
// 先创建一个方法
func requestReturn(c *gin.Context) {
c.String(http.StatusOK, "OTHER")
}
// 在创建请求URL
r.GET("/OTHER", requestReturn)
r.POST("/OTHER", requestReturn)
URI
静态URI
r.GET("/user/find", func(c *gin.Context) {
c.String(http.StatusOK, "any")
})
路径参数
r.GET("/user/find/:id", func(c *gin.Context) {
c.String(http.StatusOK, c.Param("id"))
})
模糊参数
// 使用path来接收值
r.GET("/user/*path", func(c *gin.Context) {
c.String(http.StatusOK, c.Param("path"))
})
路由分组
在实际开发中,路由可能会有很多的版本,为了方便开发管理可以使用以下方法进行分组创建
// 路由分组
v1 := r.Group("v1")
v2 := r.Group("v2")
v1.GET("/user/find", func(c *gin.Context) {
c.String(http.StatusOK, "/v1/user/find")
})
v2.GET("/user/find", func(c *gin.Context) {
c.String(http.StatusOK, "/v2/user/find")
})