讲真,我听了很多关于 Rest 的解释,这个算是让我最懂的。
千万别去找 Restful 的全拼写,这就好像:
你看到一个人在谈代码格式,然后你跑过去加入其中;这只能说明你跟这群人一样low
go fmt code/path
开个玩笑,下面是正题。
Rest 和 HTTP 紧密联系是因为,这种协议(protocol) 一般用于 web 开发。(具体原因看下面)
Rest 更多的应该是和 CRUD (create, read, update, delete)关联,对应 HTTP的多种方法。
Restful协议为什么和HTTP联系这么紧密?
- REST 的架构组成和 HTTP应用协议的应用类似:
可以看做抽象的 web-server 模型,就好像你点击超链接(hyperlink)然后返回得到的网页信息。
- REST操作基于 CRUD, 它和 HTTP 操作可以对应
HTTP 兼容了 REST 的各种操作(mapping): GET/POST/PUT/DELTE/OPTIONS. (映射并不固定)
(至于请求时通过 URL 头,还是 body发送出去, REST并没与规定,这是HTTP的工作)
但是资源的 URL 并不包含具体的HTP Method 名字,而是通过具体的资源是元素还是集合给出不同的链接。
同时, REST 也可以对应 SQL操作 (Web 应用一定会有持久化动作)。
RESTful API?
其实说白了,REST/HTTP API 做了那部分工作呢? URL/ROUTER 对应具体的 API
把本地资源的 CRUD 操作,通过类似HTTP协议的形式映射出去,链接就是其表现形式,绑定的方法才是实质
例如:
URL /note/:id
可以绑定具体的 handler 处理,就像这样:
1 | router.GET("url格式", 具体方法) |
具体案例:(需要借助 httprouter 这个 golang 库)
1 | package main |
(代码存储在: 《宝库-cases》)
运行一下, 然后 curl 调试:
Merlin 通过 golang 解释了一下 RESTful 协议,点到为止