为什么GithubAPI python POST请求不起作用?

为什么GithubAPI python POST请求不起作用?,python,github,python-requests,Python,Github,Python Requests,我想使用API在github上创建一个pull请求。下面的curl命令不起作用 curl \ -X POST \ -H "Accept: application/vnd.github.v3+json" -H "Authorization: token ghp_abc...123" \ https://api.github.com/repos/alex4200/hello-world/pulls \ -d '{"head"

我想使用API在github上创建一个pull请求。下面的
curl
命令不起作用

curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json"  -H "Authorization: token ghp_abc...123" \
  https://api.github.com/repos/alex4200/hello-world/pulls \
  -d '{"head":"copyright_updater","base":"master","title":"Test PR curl"}'
但是这个python代码片段不起作用:

import requests

headers = {
    "Accept": "application/vnd.github.v3+json",
    "Authorization": "token ghp_abc...123"
}
data = {
    "head": "copyright_updater",
    "base": "master",
    "title": "Test PR python"
}

response = requests.post(
    "https://api.github.com/repos/alex4200/hello-world/pulls",
    headers=headers,
    data=data
)
print(response.text)
此命令使用与
curl
相同的数据,返回400错误消息

{"message":"Problems parsing JSON","documentation_url":"https://docs.github.com/rest/reference/pulls#create-a-pull-request"}

这里的问题是什么?

您是否尝试使用
json=data
而不是
data=data
?是的,成功了。似乎教程/文档也不正确:并非所有要发送的数据都必须是json格式。python库根据使用
data
json
参数自动处理转换对不起,我不明白你的意思。文档中的错误是什么?使用
request
而不使用
json
内容是完全有效的。您发布的链接没有说明如何使用所有这些参数。这只是一个概述,没有教程。这就是为什么官方网页上有这样的例子。例如,您可以自己使用
数据
json_dump
数据,或者您可以简单地将其作为序列化对象发送,但您的请求url不接受这种方式,因此您的问题出现了。您的用例:@Alex请阅读我写的内容。我已经澄清了,这不是“未知原因”。再次说明:这是因为您将请求发送到的后端需要
JSON
格式。有很多后端不需要
JSON
格式。如果您使用
数据
,则API只是将其序列化并发送到后端。这在许多后端都是有效的,但它不是JSON。因此,它不适合您的用例,而是许多其他用例。