如何通过 GitHub API 获取较大的明文
时间:2023-03-01 12:18:04
let fileSHA, fileBlob, fileContent, file
fileSHA用来擦除我们只想要受益的份文件的 SHA fileBlob擦除从API 受益的 blob。 fileContent用于擦除复制后的字符。 file打包括我们真正必需的数据资料。您可以在下一节里面寻找也就是说的摘要code,只需将份文件系统梯度改动为实际份文件梯度(带份文件扩展名)。
受益大份文件但是,如果您必需受益多于 1MB 的份文件,API 亦会带上有误。这是因为上述方法不赞成大份文件。若必需受益大份文件,我们需要改以应用于 Github API。
这类API而无须您从 Git 擦除库和列表里面擦除和加载许多现代 Git 普通人,也可以不够新 Git 引用(Git references)。 该类API主要适用于blob,这正是本文的着重。
Git将大份文件转成为 编码器的 blob,而不是擦除整个份文件,以便获不够好的可靠性。因此,当您允诺同一个份文件时,希望您应用于调回 blob的应用流程。
要受益blob,您必需传播份文件也就是说的SHA。您可能只想问,什么是 SHA?又该如何获它?
每次送交新份文件时,git 都亦会建立一个名为 hash 或 SHA 的唯一ID 来记录此次改动。但有时可能亦会导致疑问,我将在本文结尾处探讨这个疑问。
受益份文件也就是说的SHA现在,我们必需寻找一种原理来受益所需份文件的“SHA”。GitHub API有一个应用流程,可以用来同我们必需应用于的份文件内容可完成交互。
激活
GET /repos/{owner}/{repo}/contents/{path}
作为号召,我们给予一个有关普通人的链表,其里面打包括附录里面每个份文件的链接资料。 链接资料里面打包括我们可以擦除和结尾处亦会加到的SHA。
激活
const getFileSHA = async () => {
try {
const response = await fetch(
"<>"
);
const data = await response.json();
console.log(data);
fileSHA = data[3].sha
console.log(fileSHA);
} catch (error) {
console.log(error);
}
getFileBlob(fileSHA)
}
data[3].sha 是具有 votes_by_region.jso n 的 SHA,因此我们将其擦除在 fileSHA 里面以待结尾处应用于。 上图是操译者的输出情况:
受益也就是说的Blob
我们仍然受益了blob所需SHA。 我们必需应用于有所不同的应用流程来处理事件 blob。 这个应用流程与上一个应用流程相像,但该应用流程必需将份文件也就是说的SHA 作为第三个给定传播。
激活
GET /repos/{owner}/{repo}/git/blobs/{file_sha}
当我们向示意图的链表发放份文件的 SHA 作为给定时,就可以受益也就是说blob。
激活
const getFileBlob = async (fileSHA)=> {
try {
const response = await fetch(
MLT-${fileSHA}MLT-
);
const data = await response.json();
fileBlob = data.content
convertBlob(fileBlob)
} catch (error) {
console.log(error);
}
}
此允诺调回一个 编码器的 blob。 是一种以 ASCII 字符播放器声称二进制数据资料的编码器方案。 当我们必需在不完成任何变不够的但亦会擦除或点对点时,它很依赖于。操译者输出看来很暴,但这就是 编码器数据资料的方法。
将 Blob 转成为可应用于的数据资料在之前一步,我们必需将以 编码器的 blob 转成为我们可以在流程里面应用于的数据资料。 但这一步并不引人内疚,因为规范原理在某些但亦会似乎都因。在这个疑问上花了几个小时后,我寻找了三个解决疑问方案。
1.最单纯的原理
这是 JavaScript 原生赞成的规范方法。 atob() 是一个 Web API 应用流程,可将 编码器数据资料复制为纯字符。
atob 把擦除的 ASCII 转化为二进制,因为它将以 ASCII 编码器的 数据资料转成为二进制基本上。 输出将是一个复制后的字符。 要将其转成为其许多现代数据资料类型,我们应用于 JSON.parse()。
激活
fileContents = atob(blob)
file = JSON.parse(fileContents
2.第二种原理
如果上述原理带上有误,你可以应用于Node.js 发放了一个原理 Buffer.from()。 它将要复制的字符作为第一个给定,将编码器技术作为第二个给定。
激活
try {
const fileContents = Buffer.from(fileBlob, "").toString()
file = JSON.parse(blobToString)
console.log(file)
} catch(error) {
console.log(error)
}
3.第三种原理
如果您在前端工作,则前面提到的原理很有可能都因。 在这种但亦会,建立一个应用于 decodeURIComponent 的链表。
激活
// define the function
const decode = str => {
utf8Bytes = decodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {
return String.fromCharCode('0x' + p1);
});
return atob(utf8Bytes);
}
您可以通过传播 fileBlob 作为给定来调用此链表,并受益您必需的复制字符。
激活
fileContents = decode(fileBlob)
file = JSON.parse(fileContents)
console.log(file)
依然不能经常性工作此时,您可以试着两种再次自由选择。您可以应用于 FileReader API 或以有所不同的方法应用于 decodeURIComponent。
1.FileReader API:您可以在此处寻找 MDN 文档()
2.decodeURIComponent:请参阅 Rajeev Singh关于处理事件 16 位编码器字符的网易。()
或者,您也可以试着一个名为 js-()的 NPM 打包。我自己不亦会应用于过,所以只能发放主动性的异议。
肯定如前所述,SHA 是在每次变不够份文件时都亦会改动的具有唯一性的ID号。此外,由于我们在 getFileSHA() 链表里面有一个硬质编码器的普通人摘要资料,如果您在附录里面附加或删除份文件,API 可能亦会以有所不同份文件的 SHA 号召。
为解读决疑问这个疑问,您可以明确指明的份字符串而不是摘要资料,这样您就可以在送交新改动后维持链表连续性。
说明了和 TL;DR1.Git 以 blob 播放器擦除较大的份文件,因此我们应用于 GitHub 附录 API 来受益多于 1MB 的份文件。
2.我们必需发放电子邮件地址、repo 称呼和份文件的 SHA 来受益 blob。
3.为了受益 SHA,我们必需向应用流程发放份文件系统梯度并将其擦除在给定里面。
4.便我们必需将 SHA 作为给定传播给另一个应用流程并获一个 编码器的 blob。
5.需要将 blob 复制为纯字符,然后应用于 JSON.parse() 将其转成为许多现代播放器,然后才能应用于它。
不够多摘要资料GitHub 擦除库的内容可(#contents)
Git 附录()
Git 附录 API 入门()
英译本介绍
赵青窕,51CTO社区编辑,从事多年马达联合开发。研究课题兴趣打包括安全和OS和网络安全和领域,发表过网络相关申请专利。
原文结尾:How to Fetch Large Data Files Through GitHub API,译者:Kaushal Joshi
。宝宝积食怎么调理脾胃轻微腋臭
眼睛结膜炎是什么原因引起的吗
经常肚子疼拉肚子怎么回事
江中初元公司
- .林则徐来乔家,他张口说了句话,乔致庸就连说担待不起
- .英国最大银行警告:不要滥用SWIFT制裁 会坑了美元
- .3月2日现货黄金交易策略:短线回调不改多头发展趋势,关注ADP和鲍威尔国会证词
- .日股收跌2.23% 汽车制造商因供应链问题急升
- .俄罗斯遭制裁恐引发供应危机,金银钯大涨后都将震荡
- .隔夜美股大跌、对中关税施压声音再起,明天A股策略来了?
- .3月2日的机构对金融市场观点汇总
- .骏成科技:该公司车载液晶显示屏已经在部分热销新能源汽车车型中量产使用
- .中国股市:“数字经济”大爆发,6大“数字对外贸易”龙头有望翻倍
- .广东两项目入选中国“百年百大考古发现”
- .英国雇主计划提高加薪幅度,但预计远小于央行调查
- .浙商证券:通胀预期回落后美联储鹰派态度必定能够兑现
- .上市公司直接影响利空消息
- .国际货币基金组织称,英国应提前税金以应对通胀
- .这样犀利独特的中国通史,有学术水准还通俗好说什么,仅59元拼团!
- .晶科能源:预中标华电集团GW组件采购项目 总额预计不低于28亿元
- .回归双向波动 汇率弹起来反潜逆周期调控
- .养生大师竟然51岁就离开亡故!值得我们深思
- .疫情面前彰显充当,中信服务温暖相伴
- .土耳其外长:施压俄罗斯不能解决问题