跳至正文
中文
立即开始

API(应用程序编程接口)

API(Application Programming Interface,应用程序编程接口)是一种明确定义的接口,让软件无需访问另一系统的内部代码,即可向其请求数据或要求其执行操作。

文章目录(8 个章节)

API 请求如何运作

使用 Web API 时,客户端会向端点发送 HTTP 请求。URL 用于标识资源,请求方法说明要执行的操作,请求头则携带认证方式、响应格式等信息。

GET /v1/products/42 HTTP/1.1
Host: api.example.com
Authorization: Bearer TOKEN
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{"id":42,"name":"Desk lamp","price":29.99}

服务器会验证请求、执行操作,并返回状态码和响应体,响应体通常采用 JSON 格式。API 文档会说明可用端点、必填字段和认证规则。

并非所有 API 都基于 Web。软件库、操作系统和数据库也会提供 API,但数据采集流程通常使用 Web API。

API 与网页采集

API 网页采集
来源 文档中列明的端点 公开网页
数据格式 通常为结构化的 JSON 或 XML 需要提取数据的 HTML
访问控制 密钥、权限范围和配额 网站规则和爬虫控制
变更风险 版本变更或弃用 页面布局和标记变更

如果官方 API 能根据可接受的条款提供所需数据,应优先使用。网页采集可以收集 API 未提供的公开信息,但爬虫必须遵守网站条款、robots.txt 指令和请求限制。

数据采集中的 API

可靠的 API 客户端通常需要处理:

  • **认证:**按照文档发送 API 密钥、OAuth 令牌或签名请求。
  • **分页:**根据页码、游标或继续令牌依次请求,直至获取完整结果集。
  • **限速:**遵守服务规定的每分钟请求数或账号配额。
  • **错误:**临时故障可以重试,但遇到无效认证信息或格式错误的请求时应停止。

如果限速导致返回 429 Too Many Requests 响应,响应中如有 Retry-After,应按其要求等待,并降低请求频率。

通过代理访问 API

HTTP 客户端可将代理 URL 设置为 http://USERNAME:PASSWORD@HOST:PORT,通过代理发送 API 流量。代理会改变 API 看到的源 IP,可用于地区测试或统一管理网络出口。

代理不会改变 API 密钥、权限或账号配额。使用轮换 IP 规避 API 限制可能违反其条款,而且往往无效,因为限制可能与账号或令牌绑定。如果代理服务器不接受所提供的认证凭据,会在请求到达 API 前返回 407 Proxy Authentication Required。

常见问题

API 是什么的缩写?

API 是 Application Programming Interface(应用程序编程接口)的缩写,指软件向其他组件或服务请求数据或功能时所遵循的规则。

API 比网页采集更好吗?

如果官方 API 能提供所需数据,通常更好。API 返回的字段更稳定,而当获准使用的公开数据只存在于网页中时,网页采集会更实用。

可以通过轮换代理访问 API 吗?

可以,但前提是 API 允许代理流量。IP 轮换可能干扰 IP 白名单或与 IP 绑定的会话,也不会重置与 API 密钥或账号关联的限制。

相关术语

查看全部术语