数据传输,数据调用中的那些常用方式

网络 通信技术
在互联网和物联网高度发达的今天,似乎一切都可以连接起来,而彼此连接通讯的方式就是API,而对于API,有很多种方式进行数据的传输,今天我们就来说一说API通信的演变过程。

在互联网和物联网高度发达的今天,似乎一切都可以连接起来,而彼此连接通讯的方式就是API,而对于API,有很多种方式进行数据的传输,今天我们就来说一说API通信的演变过程。

[[427409]]

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 的应用也能表现得足够迅速。

总结

在万物互联的时代,人们总是必不可少地需要跟第三方接口打交道,或者是向第三方提供接口服务,我们总是希望我们的程序可以更快,更高效,更便捷,因此开发人员不断研发和改进技术,未来的接口服务不是第三方提供什么服务来给用户使用,而是用户想要什么数据就可以从第三方调取。

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2020-06-12 07:50:15

大数据

2013-11-26 15:51:45

Android编程蓝牙数据传输

2010-04-07 14:54:38

2021-05-19 07:50:53

Node.js数据传输

2023-04-12 16:20:00

同步数据异步数据传输

2024-05-06 10:55:39

2021-12-14 11:01:44

TCPUDP网络协议

2010-07-13 15:55:12

FTP数据传输模式

2015-10-14 09:44:55

TCP网络协议数据传输

2011-03-04 13:22:10

FileZilla

2020-08-13 08:34:10

MySQL数据DTS

2010-06-30 15:06:27

FTP数据传输模式

2009-05-19 17:05:10

2009-04-10 23:40:06

2009-07-07 16:46:33

数据传输铜缆结构

2009-12-08 11:17:41

WCF双向通信

2021-06-09 11:28:06

加密数据Jsencrypt

2024-08-05 09:31:00

MySQLDTS数据

2017-05-04 12:48:18

WOT网易NDC

2019-09-06 09:11:36

以太网数据二层交换
点赞
收藏

51CTO技术栈公众号