一、基础定义
API(Application Programming Interface)应用程序编程接口
API 是抽象的「规范、约定、能力集合」。 它定义:你可以调用哪些能力、传什么参数、会返回什么结果。
API 偏向逻辑、能力层面,是一份契约,不一定走网络。
例子:
接口(Interface)
接口是 API 的具体实现载体,是实实在在的通信出入口。 把 API 这套约定,用代码实现,对外暴露出来,这个可以访问的入口,叫接口。
接口偏向物理 / 通信层面,是真实可调用的通路。
通俗类比
- API:菜单(约定有哪些菜品、点单规则,抽象的契约)
- 接口:服务员(真正帮你传递请求、返回结果的实体通路)
菜单 (API) 规定可以点什么菜;服务员 (接口) 完成实际交互。 一个 API 能力,可以提供多个接口实现;也可以一个接口实现一组 API 能力。
二、分类维度(测试重点)
1、本地 API(进程内 API,不走网络)
程序内部模块之间调用,没有网络请求。
- API:类提供的方法、函数定义
- 接口:函数 / 方法入口 示例:Python 函数、Java 类方法。测试里单元测试测的就是这类 API。
2、网络 API(我们做接口测试的对象,HTTP/RPC)
跨进程、跨机器、跨系统,通过网络通信。
工作中说的 “调 API”“测接口”,全部属于网络 API。
表格
| 网络 API | 业务能力契约:登录、查询用户、新增订单这些能力定义 |
| HTTP 接口 | 基于 HTTP 协议实现出来的真实访问入口:POST /api/user/login |
POST /api/user/login 这个 url,就是接口;它提供的 “用户登录” 能力,是API。
RPC 接口(微服务内部,Dubbo、gRPC)
也是网络接口,但不走 HTTP 协议,自定义二进制协议,服务和服务之间内部调用。
- API:服务定义的方法能力
- 接口:RPC 暴露出来的服务方法入口
我们手工测试大多测 HTTP 接口;后端微服务会大量 RPC 接口。
三、核心区别总结(面试标准答案)
口语现状:工作中几乎不严格区分,“调 API”“调接口” 表达同一个意思;但是面试要能说出概念差异。
四、HTTP 网络接口完整内部执行全流程(深度原理,面试加分)
以登录接口 POST /api/user/login 举例
API 契约规定了入参出参格式;接口负责完成整个通信执行。
两层状态码,再次重点区分(高频坑)
代表 HTTP 请求通不通,不代表业务成功。
代表业务逻辑是否执行成功,写在响应 json 体内,由开发自定义。
面试必考题:http 返回 200 是否代表接口调用成功? 答:不是。200 代表网络请求成功,要以响应体里面 API 约定的业务 code 判断业务是否成功。
五、接口测试,我们到底在测什么?
站在测试视角:
接口文档本质就是API 契约说明书,接口是被测对象。
六、容易混淆名词辨析
七、面试完整背诵参考答案
问题:说说 API 和接口的区别?
API是应用程序编程接口,是一套抽象的能力契约,定义了可以调用什么功能、入参出参规则。API分为本地API和网络API,本地API就是程序内部函数方法,不需要网络。
接口是API的具体实现入口。如果是网络场景,接口就是跨系统通信的真实通路。
API偏向能力定义,接口偏向实际调用实体。接口属于API的实现,但API不一定是接口,比如本地函数属于API,但不属于网络接口。
我们日常做接口测试,测试的就是网络API对应的HTTP/RPC接口,验证接口实现是否符合API文档契约。
八、延伸:RESTful API(测试经常听到)
RESTful 是一套API 设计规范(是契约风格),不是新协议。
- 用 HTTP method 表达动作:GET 查、POST 新增、PUT 修改、DELETE 删除
- url 只描述资源,不描述动作:/api/user 而不是 /api/getUser
RESTful API 是设计风格,最终实现出来就是一个个 HTTP 接口。



