尝试 POST API 请求时出现错误 500

error 500 when tried to POST API with requests

我尝试 post 通过请求将数据发送到外部 API,这是我的代码:

import requests
import json

client_id = "MY_CLIENT_ID"
secret = "MY_CLIENT_SECRET"
data = {
    'grant_type': 'client_credentials',
    'scope': 'MY_SCOPES',
}
head_token = {
    "Client_id": client_id,
    "Client_secret": secret,
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": "Basic SOME-RANDOM-STRING"
}
response = requests.post(
    "https://api.example.com/oauth2/token", data=data, headers=head_token)


print(response.status_code)

if response.status_code in [200]:
    resp_dict = json.loads(response.text)
    access_token = resp_dict["access_token"]
    print(access_token)

    url = 'https://api.example.com/send/data'
    data = {'some' : 'data'}
    headers = {
        'client_id': client_id,
        'client_secret': secret,
        'authorization': "Bearer %s"  %access_token,
        'content-type': "application/json",
        'accept': "application/json"
    }

    r = requests.post(url, data=json.dumps(
        data, default=str), headers=headers)
    print(r.status_code)

脚本成功获取了访问令牌,但是当它到达第二个端点时,它总是给出 500 响应。这是终端:

python3 test_hit.py
200
THE_ACCESS_CODE
500

我想知道是什么原因导致它给我响应 500,即使我已经获得访问令牌来点击第二个?

问题已解决!

这是文档错误,他们给我的示例在数据参数中丢失了 []

我不拥有端点,我无法从 API 端调试它。

我遇到这个解决方案是通过邮递员尝试命中终点,邮递员成功命中第二个终点,所以我试图检查我的代码和邮递员之间有什么区别auto-generated python代码,我的代码只缺少 [].

文档:

data = {'sample' :{
        'data1' : 'value1'
        'data2' : 'value2'
       }}

我的代码:

data = {'sample' :{
        'data1' : 'value1'
        'data2' : 'value2'
       }}

邮递员[=3​​1=]代码:

data = {'sample' :[{
        'data1' : 'value1'
        'data2' : 'value2'
       }]}