导读 | 在本文中,我的目标是向大家尽可能详细的解释REST API,包括理论和开发部分。以便大家能清楚的了解何时用以及如何使用它,包括它的本质是什么。无论是自己开发API还是使用第三方API,都会更加顺利。 |
像Alibaba,Baidu,Tecent,Toutiao,Facebook,Google,Amazon等公司都拥有开放的RESTful API或开放,我们可以申请访问,获取甚至写入数据。
所有的事情都要问为什么。为什么需要REST API ?REST为何如此普及?
当然,传递信息有很多种方式。如Socket,REST,WebService,HTTP等。
REST很灵活,与HTTP协议兼容。它是一个架构风格,并非标准,用它来提供各种服务,可以用各种编程语言来实现。
在本篇文章中,我们的目标是一起清晰的了解 REST,知道何时用以及如何使用它,以及REST的本质。
我们将通过一些基础知识和定义,包括REST API的最佳实践,可以让各位能够用任何开发语言来实现REST API。
建议您有HTTP协议基础,或者了解一部分,可以充分消化这部分内容。
REST - Representational State Transfer是Roy Field博士创立的一种架构风格,他在UC Irvine的论文中描述了架构风格与基于Web的软件架构设计,并使用HTTP 1.1开发。
我们使用REST做为互联网上不同计算机系统间通信的一种方式。
REST绑定HTTP
根据REST定义,并非如此。尽管人们可以使用其它一些REST应用程序协议,但在涉及REST实现时,HTTP仍然是应用程序协议中无可争辩的主流。
RESTful有下列一些特点:
1、客户端/服务器架构:完整的服务由前端“客户端”和整个系统的后端“服务器”组成。
2、无状态:服务器在不同请求中间不保存任何状态。会话的状态完全由客户端负责。根据REST的定义:所有REST交互都是无状态的,也就是说,每个请求都包含连接器理解请求所需的全部信息,而不受任何先前可能发生的请求影响。
3、可缓存:客户端应该能够将响应存储在缓存中,以便获得更好的性能。
RESTful API遵循以上这些规则,并使用HTTP方法来操作资源集的服务。
因为它们提供了一种简单、灵活和可扩展的方式来开发Web通信的分布式应用程序。
我们可能有很多REST API。如果业务足够广,需要开放的服务也会变得复杂。
开发者需要一些实用主义才能做出好的应用和服务。
理论对于认知理解很重要,但理论的实施才是区分优劣应用差异的检验标准。为此,我们要聪明的工作,但一定要记得,最终用户才是第一优先级,是最高价值。
我们知道了重点,让API做得强大易,让用户的工作也变得更容易 。
在开发软件时,我们会经常使用面向对象的抽象和多态来开发应用程序。这样可以最大化重用代码。
那么,我们是不是也应该这样开发REST API?
到开发API的情况就不同了,对于REST API,具体比抽象更好。也就是完成实际的功能更好。我们来看一些实例:
有两个api版本: