我已在内部为TFS 2017开发了TFS扩展。 我需要获得项目中service endpoint的列表
我在TFS扩展(code-hub)
中使用以下代码private callTfsApi() {
const vsoContext = VSS.getWebContext();
let requestUrl = vsoContext.host.uri
+ vsoContext.project.id
+ "/_apis/distributedtask/serviceendpoints?api-version=3.0-preview.1";
return VSS.getAccessToken().then(function (token) {
// Format the auth header
const authHeader = VSS_Auth_Service.authTokenManager.getAuthorizationHeader(token);
// Add authHeader as an Authorization header to your request
return $.ajax({
url: requestUrl,
type: "GET",
dataType: "json",
headers: {
"Authorization": authHeader
}
}).then((response: Array<any>) => {
console.log(response);
});
});
}
在每次请求时,服务器的状态为401(未授权)。
如果我使用邮递员和基本身份验证,则对服务端点API的调用有效。
此外,使用相同的代码但不同的API调用(projects)也可以。
let requestUrl = vsoContext.host.uri + "_apis/projects?api-version=1.0";
是否存在某种与服务端点API相关的已知错误,或者扩展程序是否必须指定scope? (不知道要包括哪一个)
答案 0 :(得分:0)
服务端点在项目范围创建。如果您可以查询项目信息,您还应该能够查询它。
您可以尝试在https://docs.microsoft.com/en-us/vsts/extend/develop/manifest#scopes页面中添加相关范围vso.project
,看看是否可以解决问题。
缩小此问题的另一种方法是直接使用Rest API从代码(不在TFS扩展内)调用,以查看问题是否与扩展端相关。
答案 1 :(得分:0)
添加范围:vso.serviceendpoint_query