浏览 AI 知识库

API 接口对接流程:先核对认证、请求、响应和错误格式

API 对接不要从复制成功响应开始。认证方式、请求头、字段类型、错误结构和最小可运行请求,才是双方能否联通的基础。

沿完整工作流推进

前一阶段的可检查结果,是下一阶段的输入;中间证据不足时停在当前阶段。

  1. 01先遇到 401、再遇到 422,问题其实出在两层
  2. 02先确认这次任务的起点、边界和交付
  3. 03从“认证与环境”走到“测试分页、超时和重试”
  4. 04文档、实际响应和本地类型要逐字段对齐
  5. 05完成后的API 契约核对表与最小请求
沿一件真实任务走到底

先遇到 401、再遇到 422,问题其实出在两层

开发者照文档发送 POST 请求得到 401,拿到 Token 后又因字段名错误收到 422。只盯着成功 JSON 示例,遗漏了认证头、Content-Type 和错误结构。

  • 认证和环境明确
  • 最小真实请求已验证
  • 错误与重试契约写入对接记录
本例材料

先确认这次任务的起点、边界和交付

需要确认本例内容
现有材料目标接口 `POST /v1/orders`;有 OpenAPI 文档、测试 Token 和最小订单样例;禁止调用生产。
不能越过的边界先核对环境、认证、请求和响应契约;Token 脱敏;用最小请求验证,再接入完整页面。
要交付的结果API 契约核对表与最小请求
处理记录

从“认证与环境”走到“测试分页、超时和重试”

当前阶段实际处理
认证与环境区分测试和生产端点、密钥类型、scope、请求头和轮换方式,不把密钥写进源码。
最小成功请求只带必填字段运行一次,保存脱敏请求、响应、状态码、请求 ID 和时间。
建立请求响应模型逐字段记录类型、必填、枚举、默认、空值和版本兼容,未知字段保持向前兼容。
按状态码处理错误区分用户输入、认证、权限、资源、限流和服务端错误,保留上游原始信息供诊断。
测试分页、超时和重试验证终止条件、幂等性、退避和取消,不对所有失败无限重试。
最小请求实测

先让一个测试订单请求成功,再封装业务客户端

教学场景:仓库需要接入供应商测试环境的订单查询接口。示例值已脱敏,真实接入必须使用官方文档给出的主机、认证方式和字段。

PowerShell

保留状态码、请求 ID 和原始响应

$headers = @{ Authorization = "Bearer $env:VENDOR_API_TOKEN"; Accept = "application/json" }
$response = Invoke-WebRequest `
  -Uri "https://sandbox.example.test/v1/orders/ord_1042" `
  -Headers $headers -Method Get -SkipHttpErrorCheck

$response.StatusCode
$response.Headers['x-request-id']
$response.Content
实测响应

客户端类型必须覆盖空值和枚举

HTTP 200
x-request-id: req_demo_7f31

{
  "id": "ord_1042",
  "status": "processing",
  "paid_at": null,
  "items": [{ "sku": "A-17", "quantity": 2 }]
}

成功样例只证明这一条请求可用;还要分别保存 401、404、429、超时和空列表样例,确认是否可重试及是否产生副作用。

契约验收

文档、实际响应和本地类型要逐字段对齐

字段或行为官方说明实测本地处理
statuspending / processing / completedprocessing未知枚举保留原值并报警
paid_at完成付款后为时间null类型允许 null,不转成空字符串
items数组2 件同一 SKU校验 quantity 为正整数
429可能含 Retry-After待错误样例验证未确认前不自动无限重试
最终输出

完成后的API 契约核对表与最小请求

契约表记录 Base URL、Bearer 认证、幂等键、必填字段和 400/401/409/422/429 错误。最小 curl 在沙盒返回 201 与 requestId;同一幂等键重试未创建第二笔订单。

常见失败

为什么“最小请求成功,前端接入仍失败”还不能交付

最小请求成功,前端接入仍失败

原因
浏览器请求在 CORS、代理或序列化层改变
怎么改
对比实际网络请求与成功 curl,逐字段检查头、正文和环境
验收方式

API 契约核对表与最小请求通过哪些检查才算完成

进一步核对

后端与数据:参考资料与核对入口