如何通过 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
。宝宝积食怎么调理脾胃轻微腋臭
眼睛结膜炎是什么原因引起的吗
经常肚子疼拉肚子怎么回事
江中初元公司
- .多城开年“花式”支持房地产市场!万科A跌破10元,板块续刷阶段新低,资金却连续买入,抢筹机会到了?
- .历史上真实世界的晋朝-西秦和大夏
- .张宗昌20多房姨前妻随手能送人,大前妻出轨瘸子他为何不敢追究?
- .ETF资金流向:越跌越买,昨日沪指震荡下挫 创业板指数跌超1%,易方达沪深300ETF却获净申购13.74亿元(所附)
- .《乾隆王朝》清朝九子夺嫡的根源:那些年被抱养的皇子们
- .历史上真实的西晋-西晋太康中后期的小康局面
- .ETF资金流向:大大的卖出!昨日两市全天弱势,沪指弱势震荡,华泰柏瑞沪深300ETF获净赎回25.69亿元(附图)
- .金庸小说中华筝的原型,大元最冷血的公主,身怀六甲却屠戮百万人
- .清朝冷方-细说清代学校与科举
- .电动车板块集体反弹,新能车ETF(515700.SH)现涨2.06%
- .为何顺治帝只活了24岁?看看他的生活状态,来时24岁已是奇迹
- .清朝冷知识-细说清代的笔试和科举制度
- .新能源汽车板块反弹,新能车ETF(159824)的大上涨2%,瑞泰新材领涨
- .乾隆年间的一等侍卫是个多大的官,地位高不高?
- .一些人为了达到某种目的而故意自夸自大,缩减自己的分量,因而让人反感
- .标普500指数4连跌,标普500ETF(513500)普通股交易,苹果市值蒸发1.17亿元
- .1971年,一美国华裔阿牛自称是她家的,还拿出了慈禧手谕
- .唐三彩陶器欣赏:绚丽斑斓、造型生动,尽显唐代艺术创作之美
- .美联储“鸽得不足”纳指五连滑落,资金逢滑落布局低费率纳斯达克100ETF(159659),机构:2024年更看好成长
- .弘治年间清军怎么能随随便便打到河北山东,九边的明军哪去了