在RESTful API 设计规范中,有一部分是针对HTTP 方法动作的定义,规定了这些方法对于具体资源的操作方式,比如GET、POST这两个是我们常用的,除了他们,HTTP还定义了很多HTTP 方法。
RESTful API 规范
其实我们应该可以发现,我们开发的一个个Web应用服务或者程序,其实就是对服务器的资源的CRUD(创建、检索、更新和删除),所以 RESTful API 的规范建议我们使用特定的HTTP方法来对服务器上的资源进行操作。
在 RESTful API 中,使用的主要是以下五种HTTP方法:
- GET,表示读取服务器上的资源
- POST,表示在服务器上创建资源
- PUT,表示更新或者替换服务器上的资源
- DELETE,表示删除服务器上的资源
- PATCH,表示更新/修改资源的一部分
Gin RESTful API 实现
现在我们通过一个具体的Go代码示例,来演示如上我们所说的RESTful API定义的资源操作,但是这里的实现我们以演示Gin便捷的HTTP Method方法注册为主,会忽略很多具体业务逻辑的代码,并且不会严格的按照RESTful API的 Status Code 进行返回。
type User struct { ID uint64 Name string }
首先我们定义一个用户User,用来表示我们需要操作的用户。
func main() {
users := []User{{ID: 123, Name: "张三"}, {ID: 456, Name: "李四"}}
r := gin.Default()
r.GET("/users", func(c *gin.Context) {
c.JSON(200, users)
})
r.Run(":8080")
}
这里我们通过GET方法就可以很容易的注册一HTTP GET请求的处理逻辑,这里是返回所有的用户信息,JSON的格式。
我们运行这段代码,在浏览器里打开http://localhost:8080/users,就可以看到如下信息:
[{"ID":123,"Name":"张三"},{"ID":456,"Name":"李四"}]
Gin不光为我们提供了快捷的GET方法,还有其他方法,可以很容易的让我们实现对应的HTTP Method方法注册。
r.POST("/users", func(context *gin.Context) {
//创建一个用户
})
r.DELETE("/usrs/123", func(context *gin.Context) {
//删除ID为123的用户
})
r.PUT("/usrs/123", func(context *gin.Context) {
//更新ID为123的用户
})
r.PATCH("/usrs/123", func(context *gin.Context) {
//更新ID为123用户的部分信息
})
此外还有不常用的HEAD、OPTIONS、TRACE、CONNECT等方法,从中可以看出,Gin的API非常友好,可以让我们很容易的使用相应的方法来注册我们对某个HTTP Method的处理。
原文地址:
https://www.flysnow.org/2019/12/12/golang-gin-restful-api.html