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

Axios API调用抛出‘JSON param empty error’问题排查求助

问题排查与解决方案

1. 核心问题定位

你的代码存在两个关键错误,导致API返回"JSON param empty error":

  • Axios POST请求的参数结构完全错误,混淆了请求体和配置项的位置
  • 请求体的字段名与API要求不匹配,且结构不符合JSON-RPC示例格式

2. 分步修正方案

(1)修正Axios调用结构

Axios.post的标准语法是 axios.post(url, 请求体数据, 配置对象),你之前把headers、请求体、参数都混在了第二个参数里,导致实际发送的请求体完全不符合API预期。

(2)匹配API要求的请求体格式

对比curl示例,API要求的请求体是一个包含jsonrpc、method、params的完整对象,且params内的字段名必须和示例完全一致(比如你代码里写的username要改成user)。

3. 修正后的完整代码

import axios, { AxiosResponse } from "axios";
import { ConstDataSet } from '../../core/constants/data-set.coonstant';

export class DataService {

    private apiUrl: string = 'https://api.provider.com/products/get_json';

    async fetchData(constDataSet: typeof ConstDataSet): Promise<AxiosResponse | void> {
        try {
            // 严格按照API示例构造请求体
            const requestBody = {
                jsonrpc: "2.0",
                method: "call",
                params: {
                    db_name: constDataSet.db_name,
                    user: constDataSet.user, // 修正字段名:username → user
                    password: constDataSet.password,
                    LanguageCode: constDataSet.LanguageCode
                }
            };

            // 正确的Axios POST调用结构
            const response = await axios.post(this.apiUrl, requestBody, {
                headers: {
                    'Content-Type': 'application/json'
                }
            });
            
            console.log(response.data);
            return response;
        } catch (error) {
            console.error(error);
        }
    }
}

export default new DataService();

4. 额外验证点

  • 先在代码中添加console.log(ConstDataSet),确认所有环境变量都已正确加载
  • 部分JSON-RPC服务要求请求体包含id字段(规范建议项),如果仍报错,可以在请求体中添加id: 1(或任意整数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:33:36