易君召
发布于 2026-09-03 / 作者:易君召 / 10 阅读
0

常见 API 接口类型

按照通信协议、交互风格、数据格式、调用模式划分,开发中最常用的几类:

1. REST API(RESTful)

目前互联网最主流

  • 协议:HTTP/HTTPS

  • 核心:用 HTTP 动词表达语义

    • GET 查询、POST 创建、PUT 全量更新、PATCH 部分更新、DELETE 删除

  • 数据格式:JSON为主,也支持 XML

  • 特点:资源为中心,无状态,简单易调试;浏览器、Postman 直接调用

  • 示例:

GET /user/100
POST /user
PUT /user/100
DELETE /user/100
  • 适用:Web 后端、小程序、App 后端接口

2. RPC 接口(远程过程调用)

像调用本地函数一样调用远程服务,服务内部调用首选 代表实现:gRPC、Dubbo、Thrift

  1. gRPC(Google)

    • 协议:HTTP/2,序列化:Protobuf

    • 特点:二进制序列化,性能高,支持流式、双向流;强类型,代码生成

    • 适用:微服务内部服务之间调用

  2. Dubbo(阿里)

    • 默认自定义 TCP 协议,也支持 HTTP;Java 生态微服务

    • 多用于 Java 微服务内网通信

  3. Thrift:Apache,跨语言 RPC

RPC 侧重方法调用;REST 侧重资源操作

3. SOAP API

  • 协议:HTTP,消息格式 XML

  • 全称:简单对象访问协议,配套 WSDL 描述接口文档

  • 特点:重型、规范严谨,支持事务、安全标准 WS‑Security

  • 适用:老系统、银行、政务遗留系统;现在新项目很少用

4. GraphQL

  • HTTP 传输,不是 REST,是查询语言

  • 客户端自己指定需要哪些字段,服务端返回对应数据

  • 优点:一次请求拿多份数据,避免多次请求、避免返回多余字段

  • 缺点:服务端需要做复杂度控制,防止恶意查询;缓存比 REST 麻烦

  • 代表:Github、很多 B 端项目

5. WebSocket API

长连接,双向实时通信

  • HTTP 握手后升级为 ws/wss 协议;不再是一问一答,服务端可以主动推送消息

  • 适用:聊天、消息推送、实时大屏、股票、在线协同

  • 格式:JSON / 二进制都可以

6. WebHook(回调接口)

事件驱动回调,不属于通信协议,是接口使用模式

  • A 系统发生事件,主动 POST 请求调用 B 提供的 API 地址推送数据

  • 例如:支付回调、Git 代码提交回调、消息通知

  • 一般是 HTTP POST+JSON

7. SSE (Server‑Sent Events) 服务器推送事件

  • 基于普通 HTTP,单向长连接:只能服务端向客户端推送,客户端不能发消息

  • 文本流格式,比 WebSocket 轻量;适合日志推送、实时通知

  • 对比:WebSocket 双向;SSE 单向

8. 文件上传接口

属于 HTTP 接口特殊场景

  • multipart/form‑data:表单文件上传

  • binary 二进制流上传

快速对比总结表

类型

底层协议

数据格式

典型场景

RESTful

HTTP1.1/2

JSON

对外开放 API,App / 前端

gRPC

HTTP/2

Protobuf

微服务内部高性能调用

GraphQL

HTTP

JSON

灵活按需获取数据

SOAP

HTTP

XML

老旧政务银行系统

WebSocket

ws/wss

JSON / 二进制

聊天、实时双向

SSE

HTTP

文本流

服务端单向推送

WebHook

HTTP POST

JSON

事件回调通知

补充小知识点

  1. 按调用者区分:开放 API(对外)、内部 API(微服务内网)

  2. 现在主流技术选型:

    • 对外给前端 / App:REST / GraphQL

    • 微服务内部:gRPC / Dubbo

    • 实时:WebSocket

    • 事件通知:WebHook


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/common-api-interface-types-guide

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/