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

调用API提示‘Missing params object in request’错误的求助

问题排查与解决

错误原因分析

状态码400 + Missing params object in request 说明服务器未正确解析到请求体中的params对象,核心问题是请求的Content-Type头未正确设置,或者请求体的传递方式不符合API的解析要求。Azure Data Factory能正常调用,是因为ADF会自动规范设置请求头和请求体格式。

解决方案

方案1:使用requests的json参数(推荐)

requests库提供了json参数,会自动将Python字典序列化为JSON字符串,同时自动添加Content-Type: application/json请求头,完全符合API的解析要求:

import requests

url = 'https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.com/endpoints/generalAPI'
auth_header = {'Authorization': 'Bearer cc686bbb8b6046c5ac52f70561516cc9'}

# 构造请求体字典
payload = {
    "params": {
        "startDate": "2024-03-01",
        "endDate": "2024-03-31",
        "dataSource": "sqcdp-actions",
        "filter": {}
    }
}

# 使用json参数传递请求体
response = requests.put(url, headers=auth_header, json=payload)
print(response.json())

方案2:手动设置Content-Type头(使用data参数时)

如果坚持用data+json.dumps的方式,必须显式添加Content-Type: application/json到请求头,否则服务器会将请求体当作普通表单数据解析,无法识别JSON格式的params:

import requests
import json

url = 'https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.com/endpoints/generalAPI'
auth_header = {
    'Authorization': 'Bearer cc686bbb8b6046c5ac52f70561516cc9',
    'Content-Type': 'application/json'  # 必须添加此头
}

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

response = requests.put(url, headers=auth_header, data=json.dumps(payload))
print(response.json())

为什么之前的尝试失败?

  • 不使用json.dumps处理data:此时data是字符串,但请求头默认是application/x-www-form-urlencoded,服务器按表单数据解析,无法识别JSON结构的params。
  • 仅使用params变量但未处理头信息:即便构造了正确的JSON字符串,缺少Content-Type头会导致服务器无法正确解析请求体格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:42:45