一句话说清
接口是一份约定:我说清楚给你什么,你保证给我什么。
为什么值得懂
今天几乎所有软件都是“拼起来”的:支付、短信、地图、发票,全靠接口对接。接口出问题的成本远高于写代码的成本——对接不上、重复扣款、超时重试造成两次订单,都是接口设计没想清。理解接口,你就理解了现代系统协作的基本礼仪。
零基础讲解
一、接口是契约,重点在语义。 路径、参数格式只是表层;真正决定成败的是语义:这个操作能不能重复执行、失败后该不该重试、把谁当成真相来源(互联网工程任务组(IETF)的技术文件《RFC 9110:HTTP 语义》)。
二、幂等是第一原则。 幂等指“重复执行同一个请求,结果与执行一次相同”。支付、下单、扣库存必须幂等,否则网络一抖动就会重复扣款。常见做法是让调用方带一个请求唯一号。
三、超时不等于失败。 请求超时只说明“没收到回答”,不代表对方没执行。所以重试必须配幂等键与退避策略,盲目重试是分布式系统最常见的自伤方式。
四、同步与异步各有用处。 同步接口简单直接,但会让两边绑在一起;异步(消息队列、事件、回调)能解耦、削峰,代价是要处理重复、乱序、丢失与补偿(霍普、伍尔夫 / 《企业集成模式》 / 第 1 章)。
五、版本与错误码是长期资产。 接口一旦被外部使用就很难改,所以要提前留版本、把错误码设计成可判断、可重试的类型,并把变更写进文档。能兼容旧调用方的接口,才是能活很久的接口。
一个例子
用户在付款页网络卡住,点了一次没反应、又点了一次。如果后端没有幂等键,这两次点击就会变成两笔订单——系统没坏,是契约没写清。
常见误解
- 以为接口就是“能通就行”:语义不清的接口迟早出事。
- 以为失败就该重试:不幂等的重试等于制造故障。
- 以为异步更高级:它把复杂度换到了数据一致性上。
- 以为文档可以后补:接口是对外承诺,改起来代价极高。
应用场景
- 生活:理解为什么网络卡顿时不要狂点“支付”。
- 职场:做系统对接时,先写清幂等、超时、重试与对账方案。
- 写作与创作:写商业事故、写系统崩溃,从“重复扣款”入手最贴近现实。
关联知识点
- 互联网原理(web-internet,接口跑在这套协议之上)
- 云计算(cloud-computing,服务之间的对接)
- 数据库(database,幂等依赖的唯一约束)
- 信息安全(information-security,接口是最常见攻击面)
- 标准与质量控制(standards-and-quality,契约与验收)
- 所属主线:信任与合作、因果与系统