检索GitLab工件文件并通过网页使用访问令牌保存到磁盘



我想使用只读访问令牌做三件事,这样网页用户就不需要提供Gitlab身份验证。我必须使用标头中的访问令牌提交GET请求,并且还没有完全弄清楚如何在Javascript中处理响应。

  1. 读取工件路径中特定.JSON文件的内容,并分配给变量
  2. 触发工件路径中特定.XLSX文件的下载,并保存到磁盘
  3. 触发完整工件archive.ZIP的下载并保存到磁盘

我的代码

var myHeader = new Headers();
myHeader.append("PRIVATE-TOKEN", accessToken);
var myInit = { 
method: 'GET',
headers: myHeader
};
var myRequest = new Request(artifactPath, myInit);
// response?

文档

为1和2提供的指导:

GET /projects/:id/jobs/artifacts/:ref_name/raw/*artifact_path?job=name
curl --location --header "PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/master/raw/some/release/file.pdf?job=pdf"

为3:提供的指导

GET /projects/:id/jobs/artifacts/:ref_name/download?job=name
curl --header "PRIVATE-TOKEN: <your_access_token>"
"https://gitlab.example.com/api/v4/projects/1/jobs/artifacts/master/download?job=test"

我觉得Ajax会有所帮助,但我从未使用过。非常感谢所有可行的简单性!

AJAX可以通过2个浏览器API使用本机JavaScript。

您有XMLHttpRequest(较旧、更兼容但语法丑陋(:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/path/to/get');
xhr.setRequestHeader('Your-Header-Name', 'Value');
xhr.onload = function() {
// What this is depends on what kind of data the endpoint returned
console.log(xhr.response);
}
xhr.send();

MDN参考

现代JavaScript用户通常更喜欢Fetch API(更新、不太兼容、干净的语法(:

// Note this will contain some ES6 stuff, such as Promises
fetch('https://example.com/path/to/get', {
// This is optional: method is GET by default
method: 'GET',
headers: {
'Your-Header-Name': 'Value'
}
}).then(res => 
// You can do res.arrayBuffer(), .text(), but assuming the response is JSON...
res.json()
).then(console.log);

MDN参考

我通常使用fetch,但您使用的方法主要是个人偏好。

最新更新