如何将列表传递给 requests.patch 中的数据参数?

How to pass a list to data parameter in requests.patch?

我正在尝试通过 python 中的请求向 Auth0 中的用户添加角色,但我在数据部分遇到了问题。我尝试使用 json 参数而不是数据和其他选项通过纯列表发送此数据...

requests.patch(
    url='my_url',
    data=json.dumps(["my_role_id"]),
    headers={'Authorization': 'Bearer my_token',
             'Content-Type': 'application/json'}
)

docs 之后,如果我尝试通过 cURL 或在像 Insomnia 这样的客户端中发送相同的数据,它会起作用。

curl --request PATCH \
--url 'https://{extension_url}/users/{user_id}/roles' \
  --header 'Authorization: Bearer {access_token}' \
  --header 'Content-Type: application/json' \
  --data '[ "{role_id}" ]'

python 示例中传递给服务的数据内容与 cURL 示例中的不同。试试这个(postman-echo 有助于弄清楚发生了什么):

import requests
import json
role_ids = ["my-role-id"]
role_id_array = [ "{%s}" % x for x in role_ids ]
resp = requests.patch(
    url='http://postman-echo.com/patch',
    data=json.dumps(role_id_array),
    headers={'Authorization': 'Bearer my_token',
             'Content-Type': 'application/json'}
)
print(resp.content)

我解决了!我的 url 错误 user_id 不完整,Auth0 的授权 API 没有告诉我。