如何从Azure DevOps Extension访问URL参数?
我正在基于this example开发类似集线器的扩展程序。基本上,这是一个简单页面,可在简单表中显示数据。数据是从外部REST API服务器加载的。
我想从某个外部链接调用此页面,为此,我需要从此扩展名中读取URL参数idBuild
。这可能吗?
URL上的示例:http://server/tfs/org/proj/_apps/hub/devops-plugin.default-hub? idBuild = 15987
编辑:有关此插件的更多详细信息:
对于Pull请求,我的Pull Request服务器发布了Pull请求状态以及有关一些其他检查的信息(此处为 x86集成测试)。
我希望此状态具有URL,因此用户可以在单独的页面上显示有关此状态的一些其他信息。这是我的扩展名。
在此扩展程序中,我从外部API读取了一些数据,而 idBuild 是关键。因此,我想制作包含 idBuild 的URL,并通过该URL将 idBuild 传递到此扩展页面。
答案 0 :(得分:1)
几个月前,我遇到了与您现在同样的问题。 使用aurelia /打字稿时,我无法读取URL参数,但是我找到了一种解决方法来检索它们。
使用以下函数获取所有参数:
function getUrlParameters() {
var parameters = {};
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (m, key, value) => {
parameters[key] = value.split("#")[0];
return parameters[key];
});
return parameters;
}
这段代码获取idBuild参数:
var buildId = getUrlParameters()["idBuild"];
答案 1 :(得分:1)
感谢R Pelzer的回答,这是他的函数的TypeScript版本:
private getUrlParameters(): Map<string, string> {
const parameters: Map<string, string> = new Map<string, string>();
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (m, key: string, value: string) => {
const val = value.split("#")[0];
parameters.set(key, val);
return val;
});
return parameters;
}
这是一个用法示例:
public async componentDidMount() {
const idBuildParam = this.getUrlParameters().get("idBuild");
if (!idBuildParam)
{
throw RangeError("Missing 'idBuild' URL parameter");
}
const response = await axios.get<PoirotResultDto[]>(`http://localhost:50584/Poirots/${idBuildParam}`);
.... rest of code
}