Python + Github REST API:更新文件内容请求的问题

2023-12-08

我从以下网站获得 Status 400更新文件内容Github API,即使 400 不在可能的列表中HTTP 响应状态!

我的问题是content密钥需要进行 Base64 编码。但是,当我将内容转换为 base64 时,API 会响应“解析 JSON 时出现问题”错误。

感觉跟这个有一点关系f字符串。如果我删除它们并使用变量名称,请求将失败并出现相同的错误。

我如何成功提交此回复?


def convert_to_base64(md_payload):
    encoded_payload = base64.b64encode(md_payload.encode('utf-8'))
    return encoded_payload

def log_todo(username, repo_name, filename, api_key, sha, encoded_payload):
    response= requests.put(
        f'https://api.github.com/repos/{username}/{repo_name}/contents/{filename}',
        headers = {
            'Accept': 'application/vnd.github+json',
            'Authorization': f'Bearer {api_key}'
        },
        data = {
            "sha": f'{sha}',
            "message": "TEST",
            "committer": {
                "name": "TEST",
                "email": "[email protected]"
            },
            "content": f'{encoded_payload}'
        }
    )
    logging.error(f'##### Was TODO Logged in VCS?: {response.text}')
    return response.status_code

Results:没有关于此消息的信息,也没有状态 400doc_url

{
    "message":"Problems parsing JSON",
    "documentation_url":"https://docs.github.com/rest/reference/repos#create-or-update-file-contents"
}

400

我想到了:

  1. Changed convert_to_base64 function to:
    • 我不知道为什么必须编码为 Base64 然后解码它,但这有效
def convert_to_base64(md_payload):
    encoded_payload = base64.b64encode(md_payload.encode('utf-8'))
    encoded_payload = encoded_payload.decode('utf-8')
    return encoded_payload
  1. 改变了data参数为json
def log_todo(username, repo_name, filename, api_key, sha, encoded_payload):
    response= requests.put(
        f'https://api.github.com/repos/{username}/{repo_name}/contents/{filename}',
        headers = {
            'Accept': 'application/vnd.github+json',
            'Authorization': f'Bearer {api_key}'
        },
        json = {                       #<--This is all I changed
            "sha": f'{sha}',
            "message": "TEST",
            "committer": {
                "name": "TEST",
                "email": "[email protected]"
            },
            "content": f'{encoded_payload}'
        }
    )
    logging.error(f'##### Was TODO Logged in VCS?: {response.text}')
    return response.status_code
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python + Github REST API:更新文件内容请求的问题 的相关文章

随机推荐

  • delphi 7中如何读取资源文件?

    我已经制作了资源文件 并已将其编译并与我的 delphi 单元链接 但是从该资源文件读取时我遇到了问题 implementation R dfm R stuff res stuff rc procedure TForm1 FormCreat
  • Firebase getDocument(querySnapshot)不起作用

    我面临着 Firebase 快照的问题 我已成功将我的 Fierbase 帐户与我的 Xcode 项目连接起来 我能够更改 Firestore 云中的数据 但我读不懂 这是我的功能 class UserService static func
  • 色彩空间转换

    我正在尝试编写一个程序 在用户输入图像后 他可以看到一些小的图像处理 更具体地说 我想将图像从 RGB 转换为 CMYK 和 YUV 然后在屏幕上仅显示这些颜色空间中的一个分量 即仅来自 CMY 的青色或来自 YUV 的 U 我设法实现了转
  • 在 iPhone 的 Objective-C 中解析 Java 属性文件

    我正在 iPhone SDK 中寻找一种读取属性文件 不是 XML 风格 的方法 例如 a comment a comment a a string b a string with escape sequences t n r space
  • Windows 上的 libgit2 可能存在 Rugged gem 安装问题

    我正在使用 Windows 和我的Gemfile有这一行 gem rugged 当我跑步时bundle install它给了我这个错误 Installing rugged 0 21 0 with native extensions Gem
  • java中的ArrayList打印最后插入的值?

    我有以下java类 package com picvik model import java util Date public class ViewAlbum private Integer albumid private String a
  • 将引号替换为“``”和“''”

    我有一个包含很多内容的文档 标记 但我想将其转换为在 TeX 中使用 TeX 使用 2 个 标记作为开始引号 使用 2 个 标记作为结束引号 我只想在以下情况下对这些进行更改 以偶数出现在单行上 例如 有 2 4 或 6 已上线 例如 Th
  • 有没有办法强制从特定堆栈帧返回后不使用 Rust 原始指针?

    我正在为 主要是 C 风格 C 插件 SDK 编写一个 Rust 包装器 插件主机是一个运行事件循环的图形桌面应用程序 该插件定期作为该事件循环的一部分被调用 每当这种情况发生时 插件就具有控制权并可以调用任意主机函数 我想要包装的一个 C
  • 如何检查 $data 变量是否使用 Codeigniter 设置?

    当我设置像这样的数据时 data say something Hello 并将其发送到视图 this gt load gt view my page data 如何在视图中检查变量 say something 是否已设置 有 Codeign
  • Jackson YAML:使用标志映射正则表达式模式

    在杰克逊 我可以绘制地图YAML 中的字符串 regexField d 2 d 2 to a Pattern类上的字段 final class MappedFromYaml private Pattern regexField access
  • 自动增量,但忽略列中的现有值

    我有一张桌子 create table DB t1 id SERIAL name varchar 255 并插入一些数据 insert into DB t1 name values name1 insert into DB t1 id na
  • 如何从 SQL*Plus 查询中删除空格?

    从 sqlplus 调用的下面的查询在每个值的末尾返回很多空格 我该如何删除它 请参阅下面的示例 我用 x 替换了这些值 x x x x
  • 每个 python 对象一个 int [重复]

    这个问题在这里已经有答案了 可能的重复 类实例的自动递增 ID 我想要类似以下 Python 中的 Java 类 public class MyObject private static int ID 0 private final int
  • 在Python中获取索引的默认值超出范围[重复]

    这个问题在这里已经有答案了 a 123 2 4 b a 4 or sss print b 当列表索引超出范围时 我想获得默认值 此处 sss 我怎样才能做到这一点 本着 请求宽恕 而不是许可 的 Python 精神 这里有一种方法 try
  • Bootstrap 视频大屏幕

    我正在尝试制作一个视频来覆盖 bootstrap Jumbotron 但没有成功 这似乎是一件非常简单的事情 但我尝试的一切似乎都失败了 我已经尝试过发布的解决方案here没有成功 我也尝试过将视频的位置设置为绝对位置 并将所有边设置为 0
  • CSS 渐变动画

    我正在尝试按照所述设置 CSS 渐变动画here但我无法让它工作 作为一个例子 我已经放在一起thisjsfiddle 总的来说 CSS 渐变过渡似乎不起作用 div Machine webkit transition background
  • 在 mongoose + nodeJS 中检测到循环依赖

    我收到如下错误 错误 检测到循环依赖性 在serializeObject F Full Stack course code base meanhotel node modules bson lib bson parser serialize
  • 在多索引数据帧上突出显示最大/最小值 - Pandas

    假设有一个 2 层 MultiIndex 数据框 df pd DataFrame one A 100 3 two A 101 4 three A 102 6 one B 103 6 two B 104 0 three B 105 3 col
  • 子类构造函数中的堆栈溢出错误[重复]

    这个问题在这里已经有答案了 我的超类是 public abstract class MarketProduct private String name public MarketProduct String productName name
  • Python + Github REST API:更新文件内容请求的问题

    我从以下网站获得 Status 400更新文件内容Github API 即使 400 不在可能的列表中HTTP 响应状态 我的问题是content密钥需要进行 Base64 编码 但是 当我将内容转换为 base64 时 API 会响应 解