Golang Gin 实战Ⅱ | 简便的Restful API 实现

2,475 阅读2分钟

HTTP Method

GET

GET方法请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据.

HEAD

HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体.

POST

POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用.

PUT

PUT方法用请求有效载荷替换目标资源的所有当前表示。

DELETE

DELETE方法删除指定的资源。

CONNECT

CONNECT方法建立一个到由目标资源标识的服务器的隧道。

OPTIONS

OPTIONS方法用于描述目标资源的通信选项。

TRACE

TRACE方法沿着到目标资源的路径执行一个消息环回测试。

PATCH

PATCH方法用于对资源应用部分修改。

以上摘自developer.mozilla.org/ 对于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 实现

type User struct {
	ID   uint64
	Name string
}

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用户的部分信息
	})

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