API,即应用程序编程接口,是为了方便应用程序之间的数据和功能交互而设计的一些标准方法。API 的分类可以从多个维度进行,我会对 API 的分类维度进行简单的介绍。
-
根据使用方式的不同
通常情况下,API 可以分为两种使用方式:内部 API 和外部 API。
内部 API 是指供企业内部开发人员和应用所使用的 API。当企业需要一些定制化的应用程序或者集成特定的功能时,内部 API 可以提供更好的技术支持,同时也能保证数据的安全性和可靠性。
外部 API 则是供公众开发者使用的 API,通过提供数据和服务,使得外部的开发者可以构建丰富的应用程序并与当前的生态系统进行协作。越来越多的各类公司都开始向公众提供自己的 API,示例包括 Facebook、Twitter、Google 等。
-
根据访问方式的不同
根据 API 的访问方式,API 可以分为以下几种:
a. RESTful API REST(Representational State Transfer)是一种基于 HTTP 协议的 Web 应用程序架构标准。RESTful API 遵循 RESTful 架构的原则,通常由资源路径和请求方法组成,以达到可读性高、灵活性好的目的。
b. SOAP API SOAP(Simple Object Access Protocol)是一种基于 XML 编码的远程调用协议,比较复杂而且处理时间和网络资源使用率高。虽然 SOAP 技术已经逐渐淡出市场,但在某些特殊场景下仍然会有所应用。
c. GraphQL API GraphQL 是由 Facebook 公司开源的一种数据查询语言和 API 执行引擎,可以呈现出 schema 来表达整个数据的结构,并为前端工程师提供自由定义获取所需属性、代码重用等人性化的特色。
d. gRPC API gRPC 可以理解为 Google Remote Procedure Call,是 Google 最新开源的跨语言 RPC 框架。借助基于 HTTP/2 的二进制传输协议,gRPC 提供了比 JSON 和 RESTful 更快速和更可靠的通讯方式。
-
根据功能的不同
根据 API 的功能性质,API 可以分为以下几类:
a. Web API Web API 一般都针对 Web 应用程序,提供一些标准的接口,例如:W3C DOM 接口、HTTP 接口、WebSocket 接口、Web Worker 接口等。这些 API 帮助浏览器取得用户元素信息、发送 AJAX 请求等等。
b. 操作系统 API 操作系统 API(如 Windows API 或 POSIX API)提供了与操作系统软件交互的方法,允许应用程序查询及控制硬件设备或操作系统内核任务等。此类 API 几乎适用于任何类型的环境。
c. 数据库 API 数据库 API 可以使应用程序通过某些 API 实现对一些数据存储的操作,例如:SQL、NoSQL 等数据库里都有相关的 API 调用。
在实际使用中,API 支持访问不同的功能模块,例如数据转换、数据分析、网络安全、门户管理、日历等等,还可以根据不同的需求进行客制化的开发。
总之,在开发过程中,根据实际需求选择合适的 API 类型是非常重要的,能够快速、高效地构建需要的应用程序。
如果你日常会用到 api 管理工具的话,不妨看看我目前参与的这个开源项目,Postcat 开源的 API 管理工具,纯国产,免费的,主打插件生态,适合中小团队以及个人开发者使用,有 API 相关的核心功能。
目前在 Github 上 3k star,如果你觉得这个项目还不错的话,不妨点个 star 支持一下~
Github:
https://github.com/Postcatlab/postcat
Postcat 核心功能:
-
API 文档管理:可视化 API 设计,生成 API 文档
-
API 测试:自动生成测试参数,自动生成测试用例,可视化数据编辑
-
插件拓展:众多插件扩展产品功能,打造属于你和团队的 API 开发平台
-
Mock:根据文档自动生成 Mock,或创建自定义 Mock 满足复杂场景
-
团队协作:既能实现 API 分享也能可以创建云空间共同协作
Postcat 优势:
-
免登录即可测试:省去繁琐的验证登录的操作
-
界面简洁:没有冗余的功能与复杂选项
-
免费:中小团队以及个人使用
-
丰富的插件:支持数据迁移、主题、API 安全等高达 30 款插件
-
国产:能更好的理解国内用户的需求,与开发团队沟通无障碍
-
完善的用户文档:跟着操作就能快速上手
多提 Issue !多反馈!
在使用过程中有任何疑问,可以进群交流,
也可以在线提 Issue(强烈推荐这种开源的方式),提问题本身就已经在贡献社区了: https://github.com/Postcatlab/postcat/issues