数据传输,数据调用中的那些常用方式
在互联网和物联网高度发达的今天,似乎一切都可以连接起来,而彼此连接通讯的方式就是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 的应用也能表现得足够迅速。
总结
在万物互联的时代,人们总是必不可少地需要跟第三方接口打交道,或者是向第三方提供接口服务,我们总是希望我们的程序可以更快,更高效,更便捷,因此开发人员不断研发和改进技术,未来的接口服务不是第三方提供什么服务来给用户使用,而是用户想要什么数据就可以从第三方调取。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击