什么是API?
API 划分了服务供需方的边界,是协调不同端开发人员的协议/框架。API两端,程序可以用不同的语言、由不同的团队开发,追求不同的目标,有不同的发布节奏。只要在 API 方面达成一致,两端程序就可以正常运行。(API是服务器与客户端之间的一个公共契约)
API存在的意义:
API 解藕了系统构建的不同参与方,让服务发展更自由,也让应用混搭不同的服务、让服务被不同的客户使用更容易。
可见,API 本身可以有相当大的独立性,并且 API 的集中管理/部署可以带来很大的便利及成本优势。
什么是RESTful?
一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件
用RESTful来做什么?
主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁、更有层次、更易于实现缓存等机制。
理解RESTful架构:
RESTful的架构元素:
- 资源:网络上的一个实体或者说是一个具体的信息,比如一个MP3文件、一个网页或者一个视频等。
- 统一资源定位符:一个资源的识别符或者说是一个地址,通过URI,你可以定位到特定的资源。
- 状态转换
RESTful API设计要点:
- 避免在URI里出现动词,使用GET、POST、PUT、DELETE代替。
- 利用http状态码来反应调用结果。
- 使用JSON,避免XML作为数据传输格式。(目前,大多数“精彩”的API都为RESTful接口提供JSON数据)
请求类型:
GET (选择):从服务器上获取一个具体的资源或者一个资源列表。(一般来说,GET请求可以被浏览器缓存(通常也是这样的))
POST (创建): 在服务器上创建一个新的资源。
PUT (更新):以整体的方式更新服务器上的一个资源。
PATCH (更新):只更新服务器上一个资源的一个属性。
DELETE (删除):删除服务器上的一个资源。
响应:
1xx范围的状态码是保留给底层HTTP功能使用的,并且估计在你的职业生涯里面也用不着手动发送这样一个状态码出来。
2xx范围的状态码是保留给成功消息使用的,你尽可能的确保服务器总发送这些状态码给用户。
3xx范围的状态码是保留给重定向用的。大多数的API不会太常使用这类状态码,但是在新的超媒体样式的API中会使用更多一些。
4xx范围的状态码是保留给客户端错误用的。例如,客户端提供了一些错误的数据或请求了不存在的内容。这些请求应该是幂等的,不会改变任何服务器的状态。
5xx范围的状态码是保留给服务器端错误用的。这些错误常常是从底层的函数抛出来的,并且开发人员也通常没法处理。发送这类状态码的目的是确保客户端能得到一些响应。收到5xx响应后,客户端没办法知道服务器端的状态,所以这类状态码是要尽可能的避免。
参考学习链接:
https://developer.github.com/v3/
https://www.zhihu.com/topic/19579308/top-answers
https://www.zhihu.com/question/28557115