You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS调用Bybit现货下单API提示缺少symbol参数如何解决?

问题原因

Bybit 现货V1下单接口要求POST请求的参数格式为application/x-www-form-urlencoded,你当前使用axios默认的application/json格式传参,服务端无法正确解析请求体,所以会返回缺少symbol参数的报错。

修复步骤

  • 第一步:安装qs库用于序列化请求参数,也可以直接使用原生URLSearchParams实现
  • 第二步:修改axios请求配置,指定请求头Content-Type为application/x-www-form-urlencoded,同时将参数序列化后再传入
  • 第三步:确认签名生成逻辑符合平台规则:所有请求参数需要按照key的ASCII码升序排序后再拼接生成签名,签名计算完成后再添加到参数列表中

修改后的示例代码

const qs = require('qs');
// 原有参数定义保持不变
var params = {
    api_key: api['key'],
    qty: 30,
    symbol: "EOSUSDT",
    timeInForce: this.bybit_enums["spot"]["time_in_force"]["GTC"],
    timestamp: expires,
    orderType: this.bybit_enums["spot"]["order_type"]["MARKET"],
};

// 签名逻辑保持不变,注意签名前需确保参数已经按字典序排序
var sign = getSignature(params, api['secret']);
params['sign'] = sign;

// 调整axios请求配置
const result = await axios({
    method: "post",
    url: "https://api-testnet.bybit.com/spot/v1/order",
    data: qs.stringify(params), // 序列化参数为form格式
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
});

额外注意事项

如果你的订单是市价买单,想要按USDT的数量下单,需要把qty参数替换为quoteQty。qty仅用来指定基础币(本次请求对应为EOS)的数量,市价卖单可以继续使用qty参数。

内容的提问来源于stack exchange,提问作者user15450241

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:39:01