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
相关产品推荐
相关产品推荐

