重新编程未来:人工智能如何重新定义开发人员和语言
JSON vs GraphQL vs REST API
JSON(JavaScript 对象表示法)API 是一种应用程序编程接口,设计用于在同一硬件设备上运行的两个计算机应用程序之间或不同地理区域的不同计算机之间进行轻量级数据交换(基于文本的数据交换格式)。
API 描述用户应如何请求、捕获或修改数据以及服务器应如何响应这些请求。该 API 旨在加速 HTTP 请求以及用户和服务器之间传输的数据大小,而不影响易读性、灵活性或可感知性。
注:更多REST API概念的辨析,请阅读 REST API常见问题。
JSON API 的工作原理
用户和服务器在API中发送数据请求。然后,API 指定如何使用 GET 方法调用数据并共享附属链接。然后,JSON 对象检索数据并根据用户请求输出错误消息或显示数据。
JSON API的用户
开发人员使用该软件构建其他 API 程序,以帮助客户在从服务器检索信息时获得无缝体验,而无需临时编码。使用此 API 软件的一些著名公司包括 Twitter 和 Flickr。 JSON API 对于可能需要从存储或缓存信息的服务器检索信息的最终用户也很有用。
JSON 的重要性
● 有助于数据存储
● 利用用户输入创建数据结构
● 从服务器到服务器、从服务器到客户端以及从客户端到服务器获取或传输数据
● 以可以理解和验证的模式排列数据
JSON API的好处
Caching缓存
这是一个将数据短时间存储在缓存中的过程。缓存至关重要,因为它可以提高网站的速度和性能。
在 JSON 中,此功能是内置的 HTTP,因为用户使用单一方法获取信息,并且不需要多个位置来存储数据。通过缓存,用户可以在很短的时间内检索到搜索到的信息。
开发者可以不断测试JSON API缓存工具来提高优化。
具有优化功能
JSON 软件包含增强从客户端请求获取的 API 返回包的属性。测试 JSON API、分析和分离返回包中的有用信息的能力可以对输出质量产生积极影响。
免费 JSON API 中有两个资源可以简化流程并改进优化。一种是分页,它将响应分为包含不同内容的组。
在分页期间,完成分段、限制和标准化。通过这些流程,用户体验得到改善,因为浏览结果的复杂性被消除。另一个优化功能是排序,它指定每个关键方向。
复合文档
该软件使服务器能够同时调度相关资源和主要资源。它还允许人们在初始请求中加入额外的资源。如果执行正确,应该有助于减少 HTTP 请求。
减少 HTTP 请求肯定会提高页面的加载速度,并有助于网站优化。
稀疏字段集
使用复合文档可能会生成大量响应,从而很难找到您可能需要的确切资源。稀疏字段集允许用户从特定字段请求和获取数据。
它允许通过添加包含资源名称的字段来进行自定义。这些字段是您想要从 URI 的参数中获取的内容。
自由选择
该软件有很多功能,其中大部分都是可选的。这意味着用户有权选择使用哪个功能,而不受其他功能的干扰。每当用户需要使用某项功能时,他们都可以轻松将其打开并授予其访问权限。
客户端或用户处理数据的知识和选择使系统免于冗余和大量可能无用的数据。
JSON、GraphQL 和 REST API 之间的比较
请求效率
REST API在满足用户请求方面速度较慢。该API的模糊性是由于返回路径列表,该列表可以从第一次请求、第二次请求等进一步检索。因此,客户端每次需要获取某些内容时都必须获取请求。
在修改对象时,REST API将每个对象的整个表示都来回发送,以更新单个字段。这意味着如果客户端修改了50个注释,删除了30个并添加了20个,并且在此期间没有互联网连接。必须为更改进行100个不同的请求才能反映这些更改。但这样的批量操作会导致API膨胀。
另一方面,JSON API示例和GraphQL旨在解决REST遇到的这些挑战,只需要一个请求即可检索所请求的内容。通过限制请求的响应大小,JSON和GraphQL在用户体验方面表现出色。
GraphQL API 通过确保开发人员向每个查询精确添加所需的资源字段来解决该问题。这样做,GraphQL 查询量很大,导致可缓存请求不可行,但数据过度获取很困难。
JSON使用稀疏字段集理论来克服REACT挑战。这些稀疏字段或者说所需资源字段的列表在某种程度上与GraphQL的工作方式相似,假设它们被省略,JSON将检索所有字段。然而,当查询太大时,稀疏字段集将被丢弃,使请求可缓存。
社区
REST 已经存在了一段时间,并且更加成熟,拥有强大的开发者社区和许多原始设备制造商 (OEM)。也就是说,REST 拥有许多可供开发人员使用的资源,包括文档、扩展和集成,从而使 API 分析变得容易。尽管如此,这些工具可能需要定制才能获得最佳的开发人员体验。
相比之下,GraphQL和JSON较新,与REST相比社区基础较小。然而,它们仍然有许多开发者工具,不必专门用于实现。
数据写入
REST和JSON易于编写和获取数据,尽管JSON API示例有更好的实现。GraphQL允许在编写代码时进行突变,需要为每个新的写操作编写定制的代码。因此,在设计和实施方面,GraphQL可能更具挑战性。REST和JSON使用HTTP传统的创建、读取、更新和删除(CRUD)动词来执行获取、发布、放置和发布查询。
易用性
REST和JSON,如前所述,允许HTTP集成,使它们对开发人员更加友好。这个特性允许它们处理大量流量并使用反向代理,如Varnish或内容交付网络(CDN)。然而,GraphQL API缺乏HTTP集成,因此需要特定的关系模型和连锁技术,这可能既昂贵又耗时。
GraphQL API允许用户在调用和响应中执行多个任务,增加了其复杂性。REST易于使用且非常灵活。但是,它在基本形式中不是非常有用,因为它有很大的局限性。另一方面,JSON 可以让用户感受到 GraphQL 和 REST 的体验,因为它很可靠,而且有工具可以添加功能。
与 GraphQL 相比,REST 和 JSON 的服务器-客户端故障点更少。不过,它有许多客户端缓存,允许客户端访问数据而无需与服务器联系。
解耦过滤
这指的是客户端在不受来自客户端服务器的干扰的情况下发布查询的能力。自由的JSON API支持解耦过滤,而GraphQL依赖于额外的配置。REST API完全缺乏此功能。
总结
与REST API相比,GraphQL 和JSON可能是工具有限的新技术,但它们在处理单一资源时提供了更大的灵活性。另一方面,GraphQL API适用于创建小型应用程序。