为什么GithubAPI python POST请求不起作用?
我想使用API在github上创建一个pull请求。下面的为什么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"
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。因此,它不适合您的用例,而是许多其他用例。