背景: 我正在嘗試進行 API 呼叫,該呼叫必須包含有效負載。有效負載包含 2x 日期密鑰對值,這些值以前是固定值,我試圖使其動態化,因此它們始終是當前日期。
代碼:這是我的代碼,它試圖使start_date和end_date值動態:
def job_initializer():
key, secret, url = ini_reader()
start_date = dt.datetime.today().strftime("%Y-%m-%d")
end_date = dt.datetime.today().strftime("%Y-%m-%d")
payload ="""
{
"data":{
"type":"jobs",
"attributes":{
"job_type":"portfolio_view_results",
"parameters":{
"view_id":"304078",
"portfolio_type":"firm",
"portfolio_id":"1",
"output_type":"json",
"start_date":"%s",
"end_date":"%s"
}
}
}
}
""" %(start_date, end_date)
d = {'payload': payload}
payload = json.dumps(d)
headers = {"Accept": "application/vnd.api json", "Content-Type": "application/vnd.api json", "firm": "381"}
response = requests.post(url, auth=HTTPBasicAuth(key, secret), headers=headers, json=payload)
print(response)
return(response.json())
job_initializer()
問題:如果我硬編碼日期值(例如,"start_date": "2021-01-01"),我的代碼/API 呼叫作業正常但是,當我嘗試使值動態時,我得到 -
<Response [400]>
{'errors': [{'status': '400',
'title': 'Bad Request',
'detail': 'Missing data field'}]}
觀察:我嘗試過除錯,print(payload)發現動態標簽正在作業,但是格式看起來很不對勁,這可能是導致此問題的原因。只是說出來,以防它有助于幫助我解決問題
{"payload": "\n \n {\n \"data\":{\n \"type\":\"jobs\",\n \"attributes\":{\n \"job_type\":\"portfolio_view_results\",\n \"parameters\":{\n \"view_id\":\"304078\",\n \"portfolio_type\":\"firm\",\n \"portfolio_id\":\"1\",\n \"output_type\":\"json\",\n \"start_date\":\"2022-01-10\",\n \"end_date\":\"2022-01-10\"\n }\n }\n }\n }\n ", "variables": {}}
有誰知道我的代碼缺少什么?
uj5u.com熱心網友回復:
不太明白你目前的問題是什么。您的代碼似乎有效。您的問題是為什么會出現 400 錯誤?
由于 missing data,我猜該請求不會占用您的有效負載。您可以嘗試將 Content-Type 設定為application/json或將請求引數從 更改json為data。
例子:
r = requests.post(base_url, headers=headers, data=d)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/408061.html
標籤:
