HTTP GET http://localhost:1000/users
HTTP GET http://localhost:1000/user/123
以上是两个 GET 方法的示例:
第一个表示获取所有用户的信息
第二个表示获取 ID 为 123 用户的信息
下面再看一个 POST 方法的示例,如下所示:
HTTP POST http://localhost:1000/user
这个示例表示创建一个用户,通过 POST 方法给服务器提供创建这个用户所需的全部信息。
现在你已经知道了如何创建一个用户,那么如果要更新某个特定的用户怎么做呢?其实也非常简单,示例代码如下所示:
HTTP PUT http://localhost:1000/user/123
这表示要更新 / 替换 ID 为 123 的这个用户,在更新的时候,会通过 PUT 方法提供更新这个用户需要的全部用户信息。这里 PUT 方法和 POST 方法不太一样的是,从 URL 上看,PUT 方法操作的是单个资源,比如这里 ID 为 123 的用户。
看到这里,相信你已经知道了如何删除一个用户,示例代码如下所示:
HTTP DELETE http://localhost:1000/user/123
DELETE 方法的使用和 PUT 方法一样,也是操作单个资源,这里是删除 ID 为 123 的这个用户。
一个简单的 RESTful API
相信你已经非常了解什么是 RESTful API 了,现在开始,我会带你通过一个使用 Golang 实现 RESTful API 风格的示例,加深 RESTful API 的理解。
Go 语言的一个很大的优势,就是可以很容易地开发出网络后台服务,而且性能快、效率高。在开发后端 HTTP 网络应用服务的时候,我们需要处理很多 HTTP 的请求访问,比如常见的RESTful API 服务,就要处理很多 HTTP 请求,然后把处理的信息返回给使用者。对于这类需求,Golang 提供了内置的 net/http 包帮我们处理这些 HTTP 请求,让我们可以比较方便地开发一个 HTTP 服务。
下面我们来看一个简单的 HTTP 服务的 Go 语言实现,代码如下所示:
虽然 Go 语言自带的 net/http 包,可以比较容易地创建 HTTP 服务,但是它也有很多不足:
不能单独地对请求方法(POST、GET 等)注册特定的处理函数
不支持 Path 变量参数
不能自动对 Path 进行校准
性能一般
基于以上这些不足,出现了很多 Golang Web 框架,如 Mux,Gin、Fiber 等,今天我要为你介绍的就是这款使用最多的 Gin 框架。
引入 Gin 框架
Gin 框架是一个在 Github 上开源的 Web 框架,封装了很多 Web 开发需要的通用功能,并且性能也非常高,可以让我们很容易地写出 RESTful API。
Gin 框架其实是一个模块,也就是 Go Mod,所以采用 Go Mod 的方法引入即可。首先需要下载安装 Gin 框架,安装代码如下:
以上新增用户的主要逻辑是获取客户端上传的 name 值,然后生成一个 User 用户,最后把它存储到 users 集合中,达到新增用户的目的。
在这个示例中,使用 POST 方法来新增用户,所以只能通过 POST 方法才能新增用户成功。
现在运行这个示例,然后通过如下命令发送一个新增用户的请求,查看结果:
➜ curl -X POST -d 'name=Ele' http://localhost:1000/users
{"ID":4,"Name":"Ele"}
func main() {
//省略没有改动的代码
r.GET("/users/:id", getUser)
}
func getUser(c *gin.Context) {
id := c.Param("id")
var user User
found := false
//类似于数据库的SQL查询
for _, u := range users {
if strings.EqualFold(id, strconv.Itoa(u.ID)) {
user = u
found = true
break
}
}
if found {
c.JSON(200, user)
} else {
c.JSON(404, gin.H{
"message": "用户不存在",
})
}
}
Go 语言已经给我们提供了比较强大的 SDK,让我们可以很容易地开发网络服务的应用,而借助第三方的 Web 框架,可以让这件事情更容易、更高效。比如这篇文章介绍的 Gin 框架,就可以很容易让我们开发出 RESTful API。在我们做项目开发的时候,要善于借助已经有的轮子,让自己的开发更有效率,也更容易实现。
到此这篇关于基于Go语言构建RESTful API服务的文章就介绍到这了,更多相关Go语言构建RESTful API 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!