在互联网和物联网高度发达的今天,似乎一切都可以连接起来,而彼此连接通讯的方式就是API,而对于API,有很多种方式进行数据的传输,今天我们就来说一说API通信的演变过程。
SOAP
它的全称叫做简单对象访问协议,它是最早人们用来进行数据传输的通讯协议,它通过xml定义了服务调用的参数和类型,定义了正文格式,定义了响应方式, 它可以通过http协议进行传输,也可以通过smtp协议或者tcp协议进行传输,因为xml的冗长,在消息过多的时候,它的传输数据会大大增加。
因此,soap这种数据传输方式已经逐渐被历史舞台所淘汰。
JSON
在xml格式冗余数据过多的时候,人们发现json数据格式可以传输更多的信息,并且json被很多编程语言所支持,因此,越来越多的api采用json数据格式来对外提供服务。
可以说现在开放的第三方api,一定会提供json的接口数据格式,当然,有些第三方也会在支付接口中返回xml的数据通讯格式。
REST
rest全称是资源表现形式的状态变化,它是一种架构风格,用来约束资源的查找和定位。
它不是数据的传输格式,它也不是单单约束数据的传输格式,它约束的是资源的状态改变方式,它把一切都看成资源。
这里的表现形式指的是json,xml或者html任何数据格式,包括图片格式。
状态变化指的是通过GET,POST,DELETE,PUT等动作来修改它的状态,使它的状态增加,减少,被删除等。
REST 提供的是一个无状态的服务,它不会记录访问者的上次访问状态。
虽然很多问题可以被rest来解决,比如交易映射,增删改查映射,文档映射,但是还是有很多情况下,rest无法使用所有的映射情况。
GRPC
gRPC 是来自 Google 的现代轻量级通信协议。它主要是用来解决远程过程调用的问题。
在分布式系统中,各个系统经常需要调用其它系统的服务,除了通过http接口方式进行调用之外,还有其它的调用方式,gRPC就是其中的一种。
它是非常有效的一种方法,它利用了 HTTP/2 的特性,解决了同步发送问题,它可以进行广播发送,也可以实现多路复用,通过一个连接,它可以传输更多的消息。
它采用的是二进制的数据格式,相比于json,xml等文本格式,它大大缩小了数据传输的体积,同样的带宽可以更快更多地传输消息。
GraphQL
GraphQL 是一种针对 Graph(图状数据)进行查询特别有优势的 Query Language(查询语言),所以叫做 GraphQL。
GraphQL 是 Facebook 发明的,它为查询api提供了另一种方式,可以通过一个接口,根据不同的查询条件,返回不同的数据。
GraphQL 允许您在单个查询中询问您想要的内容,从而节省带宽并减少瀑布式请求。它还使客户端能够请求他们自己独特的数据规范。
API 开发人员使用 GraphQL 创建一个模式来描述客户端可以通过该服务查询的所有可能的数据。GraphQL 模式由对象类型组成,这些类型定义了您可以请求哪种类型的对象以及它具有哪些字段。当查询进来时,GraphQL 会根据架构验证查询。
GraphQL 查询不仅能够获得资源的属性,还能沿着资源间引用进一步查询。典型的 REST API 请求多个资源时得载入多个 URL,而 GraphQL 可以通过一次请求就获取你应用所需的所有数据。这样一来,即使是比较慢的移动网络连接下,使用 GraphQL 的应用也能表现得足够迅速。
总结
在万物互联的时代,人们总是必不可少地需要跟第三方接口打交道,或者是向第三方提供接口服务,我们总是希望我们的程序可以更快,更高效,更便捷,因此开发人员不断研发和改进技术,未来的接口服务不是第三方提供什么服务来给用户使用,而是用户想要什么数据就可以从第三方调取。