API≠REST_java


大多数人的看法,当大家谈论API时,其实都在谈论REST。不仅是大多数人,一些大型公司,银行也都把自己局限在只考虑REST API。


实际上并非如此,我当然同意REST是主要的设计模式,在过去十年来一直受开发者们的欢迎。但是,REST只是利用Web的一种API。


从总体上来说,现代API工具箱包括各种标准和方法,包括REST,实时字符流,gRPC,事件驱动等体系结构。


我们再回顾一下API。


API - 应用程序编程接口


应用程序编程接口(API)是定义不同软件系统之间交互的接口。这主要定义一个系统与另一个系统的通信方式。


API定义了所使用的协议、彼此遵循的约定等。


比如,我在Java语言积累了大量经验,这里就以Java API作为范例。在Java中,为了与数据库进行通信,Java提供了数据库API,这个API的接口和类定义了如何和不同的数据库进行连接和数据库查询。


因此,确切的实现并不是使用Java,而是使用不同的数据库提供的通信协议,如Oracle、MySQL和PostgreSQL等。


开发者提供数据库的详细信息,然后使用Java提供的API与之连接。


API基于特定的组件或设计组件可以完全自定义,遵循公共使用的行业标准,实现互操作性。


这里,讲完了API,一会讲一下REST。


API的目的是什么?


回顾一下,API通过将底层的复杂性抽象出来,向开发者或消费者提供需要的对象或操作,以此简化编程。比如Java开发者,不需要担心Oracle如何实现的数据库系统,只需要关心Java提供用来访问数据库对象,以及执行操作的类和方法即可。


API工具箱以及其它API


API≠REST_java_02


API是最近几年发展起来的方法,在后面一定会继续向前发展。


如上图所示,我提供了一些大部可用的API,你可以清晰的看到不全是RESTFul API,有很多甚至没有使用HTTP做为通信协议,比如有一些使用TCP/IP,STOMP或浏览器。


每一个编程语言都提供与其它系统进行通信的API,方式均相同。在本文中,我暂时不介绍这些单个API的工作原理,主要是介绍可用API并非REST一种。


REST(代表性状态转移)是一种架构样式,它提供了一系列架构约束。如果你的API也使用了这些规则和约束,那么你的API就是RESTFul API.


小结


想必大家已经清晰,API并不等同于REST。请在开发时,仔细选择适合自己组织的API形式,而不仅仅是单一的RESTFul。