API,即应用程序编程接口,为不同应用程序之间的数据和性能交互提供标准化的办法。在古代软件架构中,各种类型的 API 成为了构建了简单利用零碎的要害局部。而随着技术的倒退,越来越多的 API 类型也呈现了,例如:SOAP、RESTful、GraphQL 和 gRPC 等。我将会从优缺点及应用场景等角度具体介绍这些 API。
1. SOAP (Simple Object Access Protocol)
SOAP 是一种基于 XML 编码的近程调用协定。与传统的基于调用指令的办法不同,它是面向对象的且反对异步操作。其中包含 WSDL 和 UDDI 两个次要组成部分,用于定义 Web 服务的形容信息和业务参数等。长处是可能提供残缺的安全性、可扩展性和可靠性,同时还能跨平台、跨语言应用。然而,其劣势也非常显著,SOAP 技术较为简单,在解决工夫和网络资源使用率上效率较低。
SOAP 的应用场景包含 :B2B 交易、客户 / 服务器通信、基于 Web 的电子商务利用、企业应用集成等。
2. RESTful API (Representational State Transfer)
RESTful 是一种基于 HTTP 协定的架构,应用传统的 HTTP 性能如 GET、POST、PUT 和 DELETE 等办法来实现数据交互。相比于 SOAP 技术,RESTful 更加轻量化且易于应用。如果 HTML 中有一个指向网站 A 的链接,若需获取网站 A 中的资源,客户端(浏览器)间接将申请发给网站 A 的服务器即可,服务器返回对应的数据。长处在于更为灵便和自在,通常须要编写的代码量更少,而且效率也更高。但 RESTful 实质上只是一种实现理念,不足标准化的办法。此外其无状态性设计也可能带来肯定的安全性问题。
RESTful 的应用场景包含 :面向网页我的项目、基于 Web 应用程序、HTTP+JSON 数据格式等。
3. GraphQL API
GraphQL 是由 Facebook 公司开源的一种数据查询语言和 API 执行引擎。GraphQL 不同于传统的 RESTful API,它容许前端工程师自在定义所需获得的属性,并重用查问代码。另外,通过“深度优先”的形式解决关系型数据中潜在的嵌套问题,例如 Mongodb 中的 NoSQL 数据库等。缺点则是限度了须要查问的语句比 RESTful 书写起来略微简单和繁琐一些。
GraphQL 的应用场景包含 :前端开发人员和 API 开发人员进行合作、对于须要灵便查问的我的项目等。
4. gRPC API
gRPC 能够了解为 Google Remote Procedure Call,是 Google 最新开源的跨语言 RPC 框架。其基于 HTTP/2 的二进制传输协定,旨在提供比 JSON 和 RESTful 更疾速和更牢靠的通信形式。与此同时,它还提供了自动化的代码生成性能,可将多个服务的连贯合成一个繁多的接口,并且还能反对多种编程语言(包含 C++、Java、Python、PHP 等)。尽管具备非常明显的亮点,但应用 gRPC 也绝对于其余类型的 API 来说比较复杂且不够灵便。
gRPC 的应用场景包含: 大数据处理、微服务架构等。
总之,SOAP、RESTful、GraphQL 和 gRPC 都有各自的优缺点及善于畛域。开发人员能够依据业务需要、团队技术实力等综合因素抉择最适宜本人我的项目的 API。
如果你日常会用到 api 管理工具的话,无妨看看我目前参加的这个开源我的项目,Postcat 开源的 API 管理工具,纯国产,收费的,主打插件生态,适宜中小团队以及集体开发者应用,有 API 相干的外围性能。
目前在 Github 上 3.5 k star, 如果你感觉这个我的项目还不错的话,无妨点个 star 反对一下~
Github:
https://github.com/Postcatlab/postcat
Postcat 外围性能:
- API 文档治理:可视化 API 设计,生成 API 文档
- API 测试:主动生成测试参数,主动生成测试用例,可视化数据编辑
- 插件拓展:泛滥插件扩大产品性能,打造属于你和团队的 API 开发平台
- Mock:依据文档主动生成 Mock, 或创立自定义 Mock 满足简单场景
- 团队合作:既能实现 API 分享也能能够创立云空间独特合作