交易所API基础:REST API与WebSocket API的区别、API Key的申请与权限管理、API文档的阅读方法

做市机器人要跟交易所对话,得先学会它们的语言。交易所给我们提供了两套通信协议:REST API 和 WebSocket API。这两者有什么区别?什么时候该用哪个?API Key 又该怎么管?今天我把这些基础讲透。

REST API vs WebSocket API:一个像打电话,一个像对讲机

我个人习惯把 REST API 比作「打电话」——你拨一次号,对方接起来说一句,然后挂断。每次通话都是独立的,你问一句「当前BTC价格多少?」,交易所回你一个数字,然后连接就断了。下次再问,得重新拨号。

WebSocket API 呢?它更像「对讲机」。你按下通话键,对方也按着,你们之间保持一条持续的通道。交易所那边价格一变,立马就能告诉你,不用你反复去问。

我在项目中遇到过这样的情况:刚开始做市时,我用 REST API 去轮询订单簿数据,每秒钟请求一次。结果交易所那边直接给我限流了,说请求太频繁。后来换成 WebSocket,一条连接搞定所有实时数据推送,服务器负载也降下来了。

核心区别总结:
  • REST API:请求-响应模式,适合查询账户余额、提交订单、获取历史数据等一次性操作
  • WebSocket API:订阅-推送模式,适合接收实时行情、订单状态更新、成交回报等持续数据流

说白了,REST 是你主动去拿数据,WebSocket 是数据主动来找你。做市机器人需要实时监控市场变化,所以 WebSocket 是主力,REST 用来做辅助操作。

API Key 的申请与权限管理

要跟交易所交互,你得先证明你是谁。交易所给你发一对钥匙:API Key(公钥)和 Secret Key(私钥)。

申请流程大同小异,一般都在交易所的「API管理」页面。我建议你申请的时候注意以下几点:

  • 权限最小化:只勾选你需要的权限。做市机器人通常需要「交易权限」和「读取权限」,千万别勾「提现权限」。我曾经见过有人把提现权限也开了,虽然没出事,但想想都后怕。
  • IP白名单:把服务器的IP地址加进去。这样就算别人拿到了你的API Key,不是从白名单IP发来的请求也会被拒绝。
  • 限制交易对:有些交易所允许你指定API Key只能交易哪些币对。如果你只做BTC/USDT,就别让它碰其他币种。
⚠️ 重要警告:

Secret Key 一旦泄露,等于你的账户被人拿走了。绝对不要把它硬编码在代码里,不要上传到GitHub,不要截图发给任何人。我习惯把它放在环境变量里,或者用专门的密钥管理服务。

嗯,这里还要提一下签名机制。每次用 REST API 发请求时,你需要用 Secret Key 对请求参数进行签名,交易所那边用你的公钥验证签名是否合法。常见的签名算法是 HMAC-SHA256。代码大概长这样:

import hmac
import hashlib
import base64

def sign_request(secret_key, params):
    # 将参数按字典序排序并拼接成字符串
    query_string = '&'.join([f"{k}={v}" for k, v in sorted(params.items())])
    # 使用 HMAC-SHA256 签名
    signature = hmac.new(
        secret_key.encode(),
        query_string.encode(),
        hashlib.sha256
    ).hexdigest()
    return signature

你想想看,每次请求都要带上签名,交易所才能确认是你本人在操作。这个机制虽然麻烦,但确实安全。

API文档的阅读方法

拿到交易所的API文档,别急着翻代码。我教你一个阅读套路:

  1. 先看概览:了解基础URL、请求频率限制、认证方式。这些是全局规则,不看容易踩坑。
  2. 找到你需要的接口:做市机器人最常用的接口就那么几个——获取订单簿、下单、撤单、查询持仓。先找到这些接口的详细说明。
  3. 看请求参数和响应格式:每个接口需要传什么参数?返回什么数据?字段类型是什么?这些必须搞清楚。
  4. 看错误码:接口调用失败时返回什么错误码?什么意思?我曾经因为没看错误码,花了一下午调试一个「参数格式错误」的问题,结果只是少传了一个必填字段。
  5. 看示例代码:很多交易所会提供Python、JavaScript等语言的示例代码,直接拿来改改就能用。
💡 我的小技巧:

把API文档里常用的接口参数和响应字段整理成一个速查表,贴在代码旁边。比如订单簿的bids和asks字段,不同交易所的命名可能不一样,有的叫"bids",有的叫"buy",记混了容易出bug。

知识体系结构图

下面这张图帮你理清本章的核心逻辑:

交易所API基础知识体系 REST API WebSocket API API Key 管理 特性 • 请求-响应模式 • 适合一次性操作 • 有频率限制 特性 • 订阅-推送模式 • 适合实时数据 • 持续连接 管理要点 • 权限最小化 • IP白名单 • 签名机制 做市机器人实战组合 WebSocket 接收实时行情 + REST 执行下单操作 + API Key 保障安全

你看,这三个东西是配合使用的。WebSocket 负责接收实时行情和订单状态更新,REST 负责执行下单、撤单、查询等操作,API Key 则是整个通信的安全基石。缺一个都不行。

避坑指南:

我曾经在对接一个新交易所时,没仔细看文档里的频率限制说明,结果用 REST API 高频轮询订单簿,直接被封了IP。后来才知道,那个交易所对 REST 请求的限制是每秒最多5次,而 WebSocket 可以无限制订阅。从那以后,我养成了一个习惯:拿到API文档第一件事,就是找频率限制和错误码说明。

好了,这些就是交易所API的基础知识。记住:REST 和 WebSocket 各有各的用途,别混着用;API Key 管好了,你的资金才安全;文档读透了,踩坑就少了。做市机器人能不能稳定运行,地基就在这了。


专注资料整理