Web API 的设计与开发是开发者日常工作的重要内容,我们该如何来做好这项工作呢?我觉得一个务实的方法是先参考前辈们的做法,也就是站在巨人的肩上,理解消化后再尝试去突破,这样可能会事半功倍。经过一番搜索,找到了 <<Web API 的设计与开发>>, 我个人觉得这是一本对 Web API 进行全面、细致和深入剖析的书,对 Web API 的设计与开发很有帮助,值得一读。
Web API 是用于完成某种需求,由于需求会变化,所以一次就设计出完美 Web API 的想法是不现实的,所以一开始应该要给 Web API 的更改留有余地,这是很容易忽视的地方。推荐的做法是在 URI 中嵌入版本信息,典型的形式是 http://api.linkedin.com/v1/people。
虽然一次就完美地设计 Web API 的想法不现实,但我们还是想尽量做好,减少 Web API 版本变更的次数,毕竟版本越多维护成本越高,那么我们该如何设计 Web API 呢?
Web API 通过 HTTP 协议来完成通信,在设计时我们应该最大程度地利用 HTTP 协议规范。基于标准协议设计的 API 至少要比使用私有协议设计的 API 更容易理解,还会减少使用时引入的 bug,使你的 API 得到更广泛的使用,提高利用已有的程序库或代码的可能。
URI 和 HTTP 方法之间的关系可以认为是操作对象和操作方法的关系。如果把 URI 当作 API(HTTP) 的 “操作对象 = 资源”, HTTP 方法则表示 “进行怎样的操作”。通过用不同方法访问同一个 URI 端点,不但可以获取信息,还能修改信息、删除信息等,这样的思想正成为 Web API 设计的主流方式。
方法名
说明
GET
获取资源
POST
新增资源
PUT
覆盖已有资源
DELETE
删除资源
PATCH
更新部分资源
HEAD
获取资源的元信息
有时请求可能还需要传递参数,在设计 URI 时,必须决定是把特定参数放在查询参数里还是路径里,决策的依据有以下两点: