API调用失败:响应状态400,错误:'请求中缺少params对象

1 投票
1 回答
28 浏览
提问于 2025-04-14 17:43

调用API时出现错误:

错误信息是:'请求中缺少参数对象',这是用Python代码写的。以下是代码:

url='https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.com/endpoints/generalAPI'

data='''{
    "params":{
        "startDate":"2024-03-01",
        "endDate":"2024-03-31",
        "dataSource":"sqcdp-actions",
        "filter":{
           
        }
    }
}'''

authHeader = {'Authorization': 'Bearer cc686bbb8b6046c5ac52f70561516cc9'}

# response = requests.put(url, headers=authHeader, data=json.dumps(data))

response = requests.put(url, headers=authHeader, data=json.dumps({'params': {'startDate':'2024-03-01', 'endDate':'2024-03-31', 'dataSource': 'sqcdp-actions'}}))

print(response.json())

错误信息:

这里插入图片描述

尝试过以下几种方法:

  • 没有使用json.dumps的数据集
  • 在数据中使用了变量params

从Azure数据工厂调用时一切正常

这里插入图片描述

1 个回答

1

试试下面的代码

import requests, json

url = 'https://reqres.in/api/users/2'

data = '''{
    "params": {
        "startDate": "2024-03-01",
        "endDate": "2024-03-31",
        "dataSource": "sqcdp-actions",
        "filter": {
           
        }
    }
}'''

data2 = {
    "params": {
        "startDate": "2024-03-01",
        "endDate": "2024-03-31",
        "dataSource": "sqcdp-actions",
        "filter": {
           
        }
    }
}

response1 = requests.post(url, data=data2)
# or
response2 = requests.post(url, data=json.loads(data))

print(response1.json())
print(response2.json())

输出结果:

在这里输入图片描述

每当你对一个字符串使用 json.dumps 时,它会像下面这样被发送出去。如果接收端不接受这种格式,就会报错。

""{\n \"params\":{\n \"startDate\":\"2024-03-01\",\n \"endDate\":\"2024-03-31\",\n \"dataSource\":\"sqcdp-actions\",\n \"filter\":{\n \n }\n }\n}"

撰写回答