【发布时间】:2018-08-26 01:09:46
【问题描述】:
我正在尝试使用 Microsoft/vsts-node-api 从我的本地 TFS 2017 (U3) Web 扩展中获取文档列表。我可以通过以下方式获取扩展程序本身
import * as v from 'vso-node-api';
import * as xa from 'vso-node-api/ExtensionManagementApi';
import * as xi from 'vso-node-api/interfaces/ExtensionManagementInterfaces';
let serverUrl = process.argv[2];
let extensionId = process.argv[3];
async function getWebApi(serverUrl): Promise<vm.WebApi> {
return new Promise<vm.WebApi>(async (resolve, reject) => {
try {
let token = getEnv('API_TOKEN'); // personal access token
let authHandler = v.getPersonalAccessTokenHandler(token);
let option = undefined;
let webApi: v.WebApi = new v.WebApi(serverUrl, authHandler, option);
let connData: lim.ConnectionData = await vsts.connect();
console.log('Hello ' + connData.authenticatedUser.providerDisplayName);
resolve(webApi);
}
catch (err) {
reject(err);
}
});
}
let vsts: v.WebApi = await getWebApi(serverUrl);
let vstsX: xa.IExtensionManagementApi = await vsts.getExtensionManagementApi();
let extension: xi.InstalledExtension =
(await vstsX.getInstalledExtensions()).find(x => x.extensionId === extensionId);
现在我想获取该扩展中所有文档的列表。为此,我认为首先我必须在该扩展中获取所有文档“集合”(不要与 TFS/VSTS 集合混淆)。我认为我想要的 API 方法是 queryCollectionsByName,它返回一个我认为是我想要的 ExtensionDataCollection 数组,但我不知道如何创建它想要的 ExtensionDataCollectionQuery 对象(它本身只是一个 ExtensionDataCollection 数组)第一个参数。我不明白为什么它需要一个 ExtensionDataCollection 数组作为输入参数 - 我想要扩展中的所有 ExtensionDataCollection。
我试过了:
let collectionQuery: xi.ExtensionDataCollectionQuery;
let dataCollection : xi.ExtensionDataCollection[] =
await vstsX.queryCollectionsByName(collectionQuery, extension.publisherName, extension.extensionName);
但我明白了
错误:值不能为空
这些文档似乎对我没有多大帮助,但也许我没有正确阅读它们:https://www.visualstudio.com/en-us/docs/integrate/extensions/reference/client/api/vss/references/sdk_interfaces/extensiondatacollectionquery
如何从网络扩展中获取文档集合列表?
更新:REST URL
换个方式问问题。
我可以使用此 URL 获取已安装扩展的列表:
https://{account}.extmgmt.visualstudio.com/_apis/ExtensionManagement/InstalledExtensions
如果我知道“集合名称”,我可以从集合中获取文档列表:
https://{account}.extmgmt.visualstudio.com/_apis/ExtensionManagement/InstalledExtensions/{publisherName}/{extensionName}/Data/Scopes/Default/Current/Collections/{collectionName}/Documents/
我可以使用什么 URL 来获取给定扩展程序中的集合列表?我试过这个,这类似于我们获取扩展列表的方式,但我得到了 404:
https://{account}.extmgmt.visualstudio.com/_apis/ExtensionManagement/InstalledExtensions/{publisherName}/{extensionName}/Data/Scopes/Default/Current/Collections
【问题讨论】: