我想使用只读访问 token 做三件事,这样网页用户就不需要提供 Gitlab 身份验证。我必须使用 header 中的访问 token 提交 GET 请求,但还没有完全弄清楚如何在 Javascript 中处理响应。
- 读取工件路径中特定 .JSON 文件的内容,并分配给变量
- 触发工件路径中特定 .XLSX 文件的下载,并保存到磁盘
- 触发完整工件存档 .ZIP 的下载,并保存到磁盘
我的代码
var myHeader = new Headers();
myHeader.append("PRIVATE-TOKEN", accessToken);
var myInit = {
method: 'GET',
headers: myHeader
};
var myRequest = new Request(artifactPath, myInit);
// response?
文档
Guidance provided对于 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"
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 使用 native 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();
现代 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);
我通常使用fetch
,但您使用的方法主要是个人喜好。
关于javascript - 通过网页使用访问 token 检索 GitLab 工件文件并保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63512815/