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

How I can access URL parameters from Azure DevOps extension

如何从 Azure DevOps Extension 访问 URL 参数?

我正在开发一个基于 this example 的类似集线器的扩展。基本上它是一个简单的页面,以简单的 table 显示数据。数据从外部 REST API 服务器加载。

我想从某个外部 link 调用此页面,为此,我需要从该扩展中读取 URL 参数 idBuild。这可能吗?

我的 URL 示例:http://server/tfs/org/proj/_apps/hub/devops-plugin.default-hub?idBuild=15987

编辑:关于这个插件的更多细节:

对于 Pull 请求,我的 Pull Request 服务器会发布 Pull 请求状态以及有关一些额外检查的信息(此处为 x86 集成测试)。

我希望此状态有一个 URL,以便用户可以在单独的页面上显示有关此状态的一些附加信息。这个页面是我的扩展。

在这个扩展中,我从外部 API 读取了一些数据, idBuild 是关键。所以我想使 URL 包含 idBuild 并通过此 URL.[=16 将 idBuild 传递到此扩展页面=]

几个月前我遇到了和你现在一样的问题。 在使用 aurelia / typescript 时,我无法读取 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"];

感谢 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
}