搞懂 HTTP 协议,交易所 API 文档瞬间变简单
今天我们来聊聊 Crypto 量化交易中最基础的知识——REST API 与 HTTP 协议。无论你使用的是币安、OKX 还是其他交易所,这些基础知识都是必须掌握的核心内容。
一、Crypto 的 REST API 量化接口与 HTTP 协议
REST API 是一种基于 HTTP 协议的接口设计风格,也是目前 Crypto 交易所提供量化接口的主流方式。简单来说,REST API 就是交易所为量化开发者提供的“遥控器”,让我们能够通过程序向交易所发送指令——查询余额、下单交易、获取行情等。
“
💡 在 Crypto 量化中,REST API 主要负责账户操作和交易执行,而实时行情通常由 WebSocket API 负责,两者配合使用。
二、HTTP 的请求结构与响应结构
1. HTTP 请求结构(我们发给交易所)
一次 HTTP 请求包含三个部分:请求行、请求头、请求体。
POST /api/v3/order HTTP/1.1 ← 请求行Host: api.binance.com ← 请求头X-MBX-APIKEY: your-api-keyContent-Type: application/json← 空行{ ← 请求体"symbol": "BTCUSDT","side": "BUY","quantity": "0.001"}
-
请求行:包含 HTTP 方法(GET/POST)、请求路径、HTTP 版本 -
请求头:键值对形式的元信息,如 API 密钥、数据格式( Content-Type) -
请求体:实际发送的数据。GET 请求通常没有请求体,POST 请求多使用 JSON 格式
2. HTTP 响应结构(交易所回给我们)
交易所处理完请求后,返回的响应同样包含三部分:状态行、响应头、响应体。
HTTP/1.1 200 OK ← 状态行Content-Type: application/json ← 响应头← 空行{ ← 响应体"orderId": 123456789,"status": "NEW"}
状态行中的状态码非常关键,量化开发者必须熟练掌握:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
响应体返回的是实际数据,通常为 JSON 格式,包含账户信息、订单详情或错误描述。
三、量化主要接口:GET 和 POST
在 Crypto 量化中,90% 以上的交易所 API 接口仅使用 GET 和 POST 两种方法。
GET 方法:获取数据
GET 用于从服务器获取资源,只读不写,不会改变账户状态。
GET /api/v3/account HTTP/1.1Host: api.binance.comX-MBX-APIKEY: your-api-key
GET 请求的参数全部放在 URL 中,我们来拆解一下 URL 的各个组成部分:
https://www.example.com:443/api/users/123?name=zhang&page=1#section\___/ \____________/ \__/ \____________/ \_________________/ \______/协议 域名 端口 路径 查询参数 锚点
|
|
|
|
|---|---|---|
|
|
https:// |
|
|
|
www.example.com |
|
|
|
:443 |
|
|
|
/api/history/123 |
123 为路径参数(用于定位具体资源) |
|
|
?name=zhang&page=1 |
|
|
|
#section |
|
路径参数用于定位具体资源,如 /history/123 中的 123 指定了要查询哪段历史。查询参数用于附加筛选条件,例如分页(page=1)、排序、关键词搜索等。
GET 典型场景:查历史行情数据、获取服务器相关基础信息。
优点:简单直观、可缓存、幂等且安全。
限制:URL 长度有限(2KB–8KB),敏感信息会暴露在 URL 中。
POST 方法:提交操作
POST 用于向服务器提交数据,会改变账户状态(如下单、撤单)。
POST /api/v3/order HTTP/1.1Host: api.binance.comX-MBX-APIKEY: your-api-keyContent-Type: application/json{"symbol": "BTCUSDT","side": "BUY","type": "LIMIT","price": "50000","quantity": "0.001"}
POST 请求的参数主要放在请求体(Body)中,在量化交易中统一使用 JSON 格式。
为什么 POST 选择 JSON?因为 JSON 支持复杂的嵌套结构(如登陆密钥),支持数组(便于批量下单),没有长度限制,可读性强,且各主流编程语言都有成熟的解析库。
POST 典型场景:下单、批量下单、撤单、提现、设置杠杆。
优点:无长度限制、支持复杂数据结构、安全性更高(参数不暴露在 URL 中)。注意:POST 不具备幂等性,多次调用会生成多个订单,需要使用 clientOrderId 防止重复提交。
GET vs POST 速查
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
一句话原则:查数据用 GET,写操作用 POST。
四、其他 REST API 的 HTTP 方法
除 GET 和 POST 外,REST API 中还定义了其他几种 HTTP 方法:
-
DELETE:用于删除指定资源 -
PUT:用于全量更新资源,即用完整的新资源替换原有资源 -
PATCH:用于部分更新资源,仅修改资源中的指定字段 -
HEAD:仅获取响应头,不获取响应体,常用于检测资源是否存在或获取元信息 -
OPTIONS:用于查询服务器支持的 HTTP 方法,通常用于接口探测或跨域请求预检
已为您精简总结部分:
五、总结
-
REST API:基于 HTTP 的接口风格,是量化程序与交易所的通信桥梁,配合 WebSocket 使用 -
HTTP 结构:请求(请求行+请求头+请求体)与响应(状态行+响应头+响应体),状态码是排错关键(200成功、400参数错误、401认证失败、429限频) -
GET vs POST:GET查数据(参数放URL),POST写操作(参数放JSON请求体),原则:查用GET,写用POST -
其他方法:DELETE、PUT、PATCH、HEAD、OPTIONS,特定场景补充使用
掌握这些基础知识,再看交易所 API 文档时,你会发现原本晦涩的接口说明变得清晰明了——你知道每个参数该放哪里,每个状态码意味着什么,每种 HTTP 方法该如何选择。这是写出稳健、高效的量化交易程序的第一步,也是最重要的一步。
如果觉得有帮助,欢迎点赞、在看、转发支持!
夜雨聆风