我如何从Azure DevOps扩展访问URL参数

时间:2019-12-12 14:39:28

标签: azure-devops azure-devops-extensions

如何从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集成测试)。

Pull request Status extension

我希望此状态具有URL,因此用户可以在单独的页面上显示有关此状态的一些其他信息。这是我的扩展名。

My plugin page

在此扩展程序中,我从外部API读取了一些数据,而 idBuild 是关键。因此,我想制作包含 idBuild 的URL,并通过该URL将 idBuild 传递到此扩展页面。

2 个答案:

答案 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
}