带有请求 return 'Could not parse JSON' 错误的云函数
Cloud Functions with Requests return 'Could not parse JSON' error
我是 运行 python 中的一个云函数,用于 return 来自 api 的一些数据。该功能未执行,出现错误 {'code': 400, 'message': 'Could not parse JSON'}
.
这是我的代码:
import requests
import json
def my_function(request):
url = 'https://blablabla/detailed'
headers = {'X-Api-Key': 'XXXXXXXX',
'content-type': 'application/json'}
data = '{"dateRangeStart":"2020-05-10T00:00:00.000","dateRangeEnd":"2020-05-16T23:59:59.000","amountShown": "HIDE_AMOUNT","detailedFilter":{ "page":"1","pageSize":"50"}}'
#req = requests.post(url, headers=headers, json=data)
req = requests.post(url, headers=headers, data=json.dumps(data))
print(req.json())
我应该如何格式化我的数据变量?
只需将你的字典作为你的 json
参数,你不需要指定 content-type
headers requests
会为你做。
import requests
def my_function(request):
url = 'https://blablabla/detailed'
headers = {'X-Api-Key': 'XXXXXXXX', }
data = {"dateRangeStart": "2020-05-10T00:00:00.000", "dateRangeEnd": "2020-05-16T23:59:59.000", "amountShown": "HIDE_AMOUNT", "detailedFilter": { "page": "1", "pageSize": "50", }, }
req = requests.post(url, headers=headers, json=data)
print(req.json())
如果您没有设置 content-type
header 会尝试为您设置:
- 当使用关键字参数
json
时:它将设置为 application/json
- 当使用关键字参数
data
时(并且传递的值符合某些条件,大多数情况下您不必担心):它会将其设置为 application/x-www-form-urlencoded
- 如果两个 kwargs 都存在
data
优先于 header 所以它将被设置为 application/x-www-form-urlencoded
我没有详细说明使用 kwarg files
时的行为,因为它真的很长而且超出了这里的范围。
我是 运行 python 中的一个云函数,用于 return 来自 api 的一些数据。该功能未执行,出现错误 {'code': 400, 'message': 'Could not parse JSON'}
.
这是我的代码:
import requests
import json
def my_function(request):
url = 'https://blablabla/detailed'
headers = {'X-Api-Key': 'XXXXXXXX',
'content-type': 'application/json'}
data = '{"dateRangeStart":"2020-05-10T00:00:00.000","dateRangeEnd":"2020-05-16T23:59:59.000","amountShown": "HIDE_AMOUNT","detailedFilter":{ "page":"1","pageSize":"50"}}'
#req = requests.post(url, headers=headers, json=data)
req = requests.post(url, headers=headers, data=json.dumps(data))
print(req.json())
我应该如何格式化我的数据变量?
只需将你的字典作为你的 json
参数,你不需要指定 content-type
headers requests
会为你做。
import requests
def my_function(request):
url = 'https://blablabla/detailed'
headers = {'X-Api-Key': 'XXXXXXXX', }
data = {"dateRangeStart": "2020-05-10T00:00:00.000", "dateRangeEnd": "2020-05-16T23:59:59.000", "amountShown": "HIDE_AMOUNT", "detailedFilter": { "page": "1", "pageSize": "50", }, }
req = requests.post(url, headers=headers, json=data)
print(req.json())
如果您没有设置 content-type
header 会尝试为您设置:
- 当使用关键字参数
json
时:它将设置为application/json
- 当使用关键字参数
data
时(并且传递的值符合某些条件,大多数情况下您不必担心):它会将其设置为application/x-www-form-urlencoded
- 如果两个 kwargs 都存在
data
优先于 header 所以它将被设置为application/x-www-form-urlencoded
我没有详细说明使用 kwarg files
时的行为,因为它真的很长而且超出了这里的范围。