在RESTful API 设计规范中,有一部分是针对HTTP 方法动作的定义,规定了这些方法对于具体资源的操作方式,比如GET、POST这两个是我们常用的,除了他们,HTTP还定义了很多HTTP 方法。

RESTful API 规范

其实我们应该可以发现,我们开发的一个个Web应用服务或者程序,其实就是对服务器的资源的CRUD(创建、检索、更新和删除),所以 RESTful API 的规范建议我们使用特定的HTTP方法来对服务器上的资源进行操作。
在 RESTful API 中,使用的主要是以下五种HTTP方法:

  1. GET,表示读取服务器上的资源
  2. POST,表示在服务器上创建资源
  3. PUT,表示更新或者替换服务器上的资源
  4. DELETE,表示删除服务器上的资源
  5. PATCH,表示更新/修改资源的一部分

Gin RESTful API 实现

现在我们通过一个具体的Go代码示例,来演示如上我们所说的RESTful API定义的资源操作,但是这里的实现我们以演示Gin便捷的HTTP Method方法注册为主,会忽略很多具体业务逻辑的代码,并且不会严格的按照RESTful API的 Status Code 进行返回。

  1. type User struct { ID uint64 Name string }

首先我们定义一个用户User,用来表示我们需要操作的用户。

  1. func main() {
  2. users := []User{{ID: 123, Name: "张三"}, {ID: 456, Name: "李四"}}
  3. r := gin.Default()
  4. r.GET("/users", func(c *gin.Context) {
  5. c.JSON(200, users)
  6. })
  7. r.Run(":8080")
  8. }

这里我们通过GET方法就可以很容易的注册一HTTP GET请求的处理逻辑,这里是返回所有的用户信息,JSON的格式。
我们运行这段代码,在浏览器里打开http://localhost:8080/users,就可以看到如下信息:

  1. [{"ID":123,"Name":"张三"},{"ID":456,"Name":"李四"}]

Gin不光为我们提供了快捷的GET方法,还有其他方法,可以很容易的让我们实现对应的HTTP Method方法注册。

  1. r.POST("/users", func(context *gin.Context) {
  2. //创建一个用户
  3. })
  4. r.DELETE("/usrs/123", func(context *gin.Context) {
  5. //删除ID为123的用户
  6. })
  7. r.PUT("/usrs/123", func(context *gin.Context) {
  8. //更新ID为123的用户
  9. })
  10. r.PATCH("/usrs/123", func(context *gin.Context) {
  11. //更新ID为123用户的部分信息
  12. })

此外还有不常用的HEAD、OPTIONS、TRACE、CONNECT等方法,从中可以看出,Gin的API非常友好,可以让我们很容易的使用相应的方法来注册我们对某个HTTP Method的处理。

原文地址:
https://www.flysnow.org/2019/12/12/golang-gin-restful-api.html