为什么用于内容更新的Github API会抛出400错误?

2024-09-30 12:11:41 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试使用github API更新文件

https://developer.github.com/v3/repos/contents/#update-a-file

url = "https://api.github.com/repos/ishandutta2007/reach-github-issuers/contents/README.md"
r = requests.get(url)
repo_item = json.loads(r.text or r.content)
deco_content = base64.b64decode(repo_item['content'])
appended_str = open('readme_md_template.txt', 'r').read().encode()
deco_content = deco_content + appended_str
updated_content = base64.b64encode(deco_content)

retj = {}
retj["message"] = "Adding donations"
retj["content"] = str(updated_content)
retj["sha"] = repo_item['sha']

headers = {'Authorization': 'token %s' % API_TOKEN}
r = requests.put(url, retj, headers=headers)
print(r)

< Response [400] >

下面是最后一个retj变量的样子

{'content': "b'IyByZWFjaC1naXRodWItaXNzdWVycwoKVGhpcyBpcyBhIHJlcG8gd2hpY2ggY29sbGVjdHMgbWFpbCBpZCBvZiBhbGwgZm9ya2VycyBvZiBhIHJlcG8gYW5kIHNlbmQgdGhlbSBhIHNwZWNpZmljIG1haWwuCgojIyMgVG8gU2V0dXA6CgpPbiBob3cgdG8gc2V0dXAgZ21haWwgQVBJIGZvbGxvdyBbdGhpc10oaHR0cHM6Ly9naXRodWIuY29tL3NoYW5rYXJqNjcvcHl0aG9uLWdtYWlsLWFwaS9ibG9iLzU2M2M3YmY3MjJjNjliZTRmZWQyMjA0ZTI4MjlkMGFiODQzZDg3MjkvUkVBRE1FLm1kI2luc3RhbGwpCgojIyMgVG8gcnVuOgoKMS4gYHB5dGhvbjMgZ2l0aHViLWlzc3VlcnMtY3Jhd2xlci5weSAtLWlzc3VlIElTU1VFX0ZVTExfVVJMYAoKMi4gVGhlIGFib3ZlIHNjcmlwdCB3aWxsIGNyZWF0ZSBlbWFpbC1saXN0LmNzdiB3aXRoIGFsbCBpc3N1ZSBjb2xsYWJvcmF0b3JzJyBkZXRhaWxzLgoKMy4gTW9kaWZ5IHRoZSB0ZW1wbGF0ZXMgYGhlbHBfcmVxdWVzdC5odG1sYCBhcyBwZXIgbmVlZC4gSWYgeW91IG5lZWQgdG8gcmVuYW1lIG9yIHJlY3JlYXRlIG5ldyBodG1sIHRlbXBsYXRlIGZlZWwgZnJlZSB0byBkbyBzbywganVzdCBtYWtlIHN1cmUgeW91IHVwZGF0ZSBuYW1lIG9mIGl0IGluIGBzZW5kX21haW4ucHlgKGFzIG9mIG5vdyBoYXJkY29kZWQpCgo0LiBgcHl0aG9uMyBzZW5kX21haWwucHlgCgojIyMgU3VwcG9ydDoKCklmIHlvdSB3YW50IHRoZSBnb29kIHdvcmsgdG8gY29udGludWUgcGxlYXNlIHN1cHBvcnQgdXMgb24KCiogW1BBWVBBTF0oaHR0cHM6Ly93d3cucGF5cGFsLm1lL2lzaGFuZHV0dGEyMDA3KQoqIFtCSVRDT0lOIEFERFJFU1M6IDNMWmF6S1hHMThIeGEzTExOQWVLWVpOdEx6Q3hwdjFMeURdKGh0dHBzOi8vd3d3LmNvaW5iYXNlLmNvbS9qb2luLzVhOGU0YTA0NWIwMmM0MDNiYzNhOWMwYykK'",
 'message': 'Adding donations',
 'sha': 'dcb2ea15cfccbf2737b2a2db6df1cd63a61dc626'}

Tags: httpsgithubcomapiurlcontentsrepocontent
1条回答
网友
1楼 · 发布于 2024-09-30 12:11:41

这就是解决问题的方法:

updated_content = base64.b64encode(deco_content)

更改为

updated_content = base64.b64encode(deco_content).decode('utf-8')

而且也发生了变化(尽管这种变化可能不是必须的)

r = requests.put(url, retj, headers=headers)

r = requests.put(url, data = json.dumps(retj), headers=headers)

相关问题 更多 >

    热门问题