我正在尝试获取git azure devops api以获取有关js中的存储库和分支的信息。
为了实现这一点,我用以下代码制作了一个小应用程序:
$(document).ready(function() {
var personalToken = btoa(':'+'<personnalAccessToken>');
fetch('https://dev.azure.com/<company>/<project>/_apis/git/repositories?api-version=5.1', {
method: 'GET',
headers: {
'Content-Type': 'application/json'
'Authorization': 'Basic '+ personalToken
}
}).then(function(response) {
return response.json();
}).then(function(repositories) {
console.log("There are "+repositories.count+" repositories");
}).catch(function(error) {
console.log('Fetch error: ' + error.message);
});
此代码很好用,但是正如您所看到的,我的personnalAccessToken直接写在代码内...这真的很糟糕...
当我在命令行中使用git时,由于Windows使用git凭据管理器,因此无需指定任何凭据信息。这意味着我的personnalAccessToken已被存储,缓存并在每次使用git命令(例如clone等)时自动使用。
因此,我希望我的js代码使用相同的东西,我希望它自动使用存储的凭据来获取api,而无需在代码中设置personnalAccessToken。
我已经搜索了几个小时,但无法确定是否可以。
您在上面所做的不是调用git命令。您调用REST API,因此您可以根据需要将this example作为参考。
对于要访问Azure DevOps REST API之类的资源的javascript Web应用程序,它们将必须为其用户支持身份验证流程。用于JS的Azure Active Directory身份验证库(ADAL)使javascript应用程序开发人员可以设置惯性身份验证流并获取API使用的访问令牌。
基于此,我认为git凭证不足以调用REST API。但是,以上示例显示了如何实现目标。
但是如果您想使用git命令,this对您会有所帮助。