Go语言教程第十集 如何玩转Restful和RPC网络编程

21 网络编程:Go 语言如何玩转API 服务?
从这一讲开始,我将带你学习本专栏的第五模块,在这个模块中,你将学到我们项目中最常用的编码操作,也就是编写API 和 RPC 服务 。在实际开发项目中,你编写的这些服务可以被其他服务使用,这样就组成了微服务的架构;也可以被前端调用,这样就可以前后端分离 。
今天我就先来为你介绍什么是API,以及 Go 语言是如何玩转API 的 。
什么是API
API 是一套规范,它可以规范我们如何对服务器上的资源进行操作 。在了解API 之前,我先为你介绍下 HTTP ,因为API 和它是密不可分的 。
说起 HTTP ,最常见的就是POST和GET,其实最早在 HTTP 0.9 版本中,只有一个GET方法,该方法是一个幂等方法,用于获取服务器上的资源,也就是我们在浏览器中直接输入网址回车请求的方法 。
在 HTTP 1.0 版本中又增加了HEAD和POST方法,其中常用的是 POST 方法,一般用于给服务端提交一个资源,导致服务器的资源发生变化 。
随着网络越来越复杂,发现这两个方法是不够用的,就继续新增了方法 。所以在 HTTP1.1 版本的时候,一口气增加到了 9 个,新增的方法有 HEAD、、PUT、、TRACE、PATCH 和。下面我为你一一介绍它们的作用 。
GET 方法可请求一个指定资源的表示形式,使用 GET 的请求应该只被用于获取数据 。
HEAD 方法用于请求一个与 GET 请求的响应相同的响应,但没有响应体 。
POST 方法用于将实体提交到指定的资源,通常导致服务器上的状态变化或副作用 。
PUT 方法用于请求有效载荷替换目标资源的所有当前表示 。
方法用于删除指定的资源 。
方法用于建立一个到由目标资源标识的服务器的隧道 。
方法用于描述目标资源的通信选项 。
TRACE 方法用于沿着到目标资源的路径执行一个消息环回测试 。
PATCH 方法用于对资源应用部分修改 。
从以上每个方法的介绍可以看到,HTTP 规范针对每个方法都给出了明确的定义,所以我们使用的时候也要尽可能地遵循这些定义,这样我们在开发中才可以更好地协作 。
理解了这些 HTTP 方法,就可以更好地理解API 规范了,因为API 规范就是基于这些 HTTP 方法规范我们对服务器资源的操作,同时规范了 URL 的样式和 HTTPCode 。
在API 中,使用的主要是以下五种 HTTP 方法:
GET,表示读取服务器上的资源;
POST,表示在服务器上创建资源;
PUT,表示更新或者替换服务器上的资源;
,表示删除服务器上的资源;
PATCH,表示更新 / 修改资源的一部分 。
以上 HTTP 方法在API 规范中是一个操作,操作的就是服务器的资源,服务器的资源通过特定的 URL 表示 。
现在我们通过一些示例让你更好地理解API,如下所示:
HTTP GET https://www.flysnow.org/usersHTTP GET https://www.flysnow.org/users/123
以上是两个 GET 方法的示例:
下面再看一个 POST 方法的示例,如下所示:
HTTP POST https://www.flysnow.org/users
这个示例表示创建一个用户,通过 POST 方法给服务器提供创建这个用户所需的全部信息 。
注意:这里 users 是个复数 。
现在你已经知道了如何创建一个用户,那么如果要更新某个特定的用户怎么做呢?其实也非常简单,示例代码如下所示:
HTTP PUT https://www.flysnow.org/users/123
这表示要更新 / 替换 ID 为 123 的这个用户,在更新的时候,会通过 PUT 方法提供更新这个用户需要的全部用户信息 。这里 PUT 方法和 POST 方法不太一样的是,从 URL 上看,PUT 方法操作的是单个资源,比如这里 ID 为 123 的用户 。