【问题标题】:List all Azure DevOps Projects with Reactjs列出所有使用 Reactjs 的 Azure DevOps 项目
【发布时间】:2020-07-11 22:38:18
【问题描述】:

我想列出从我使用 React 的 API 调用返回的所有项目。我目前只有 C# 代码,它获取用户有权访问的所有项目并以 JSON 格式显示。在代码中硬编码个人访问令牌(因为我不知道该怎么做)。现在,我希望列出所有使用 React 返回的项目,以便用户可以从下拉菜单中选择他们想要处理的所需项目。

我对 React 几乎没有经验,也从未将它与 REST API 一起使用。

(如果有人对上述问题有答案,我将非常感谢您对另一个问题的帮助。我也在尝试在用户选择的项目中创建一个新存储库,我希望他们能够使用输入字段指定此存储库的名称。一旦用户指定了所需的存储库名称并从下拉菜单中选择了项目,他们应该能够点击“提交”以启动对 REST API 的 POST 请求并在项目中创建新的存储库。这也将使用 React 完成。)

【问题讨论】:

    标签: c# reactjs asp.net-core asp.net-core-webapi azure-devops-rest-api


    【解决方案1】:

    您可能需要检查此代码库:azure-devops-node-api-sample。我们已经在该仓库中提供了示例代码。

    Get project:

    public async getProjects(
            stateFilter?: any,
            top?: number,
            skip?: number,
            continuationToken?: string,
            getDefaultTeamImageUrl?: boolean
            ): Promise<CoreInterfaces.TeamProjectReference[]> {
    
            return new Promise<CoreInterfaces.TeamProjectReference[]>(async (resolve, reject) => {
                let routeValues: any = {
                };
    
                let queryValues: any = {
                    stateFilter: stateFilter,
                    '$top': top,
                    '$skip': skip,
                    continuationToken: continuationToken,
                    getDefaultTeamImageUrl: getDefaultTeamImageUrl,
                };
    
                try {
                    let verData: vsom.ClientVersioningData = await this.vsoClient.getVersioningData(
                        "6.0-preview.4",
                        "core",
                        "603fe2ac-9723-48b9-88ad-09305aa6c6e1",
                        routeValues,
                        queryValues);
    
                    let url: string = verData.requestUrl!;
                    let options: restm.IRequestOptions = this.createRequestOptions('application/json', 
                                                                                    verData.apiVersion);
    
                    let res: restm.IRestResponse<CoreInterfaces.TeamProjectReference[]>;
                    res = await this.rest.get<CoreInterfaces.TeamProjectReference[]>(url, options);
    
                    let ret = this.formatResponse(res.result,
                                                  CoreInterfaces.TypeInfo.TeamProjectReference,
                                                  true);
    
                    resolve(ret);
    
                }
                catch (err) {
                    reject(err);
                }
            });
        }
    

    您可以继续查看此sample 页面,它向您展示了许多示例,包括创建项目

    【讨论】:

    • 感谢您的链接。但是,我在理解代码及其作用时遇到问题......需要解释一下吗?
    • @ZEKE,有一件事需要确认,你对我上面分享的部分代码有问题吗?还是一头雾水不知道怎么看链接的完整示例github代码?
    • 我实际上对这两个 tbh 感到困惑,试图理解代码。我看到这些链接包含更多使用 Azure DevOps 的操作,但我不太了解它们是如何工作的,以及如何将其与我自己的代码集成。
    • @ZEKE 您是否查看过此入门指南(github.com/microsoft/azure-devops-node-api#get-started)?
    • 我将不得不在一个单独的项目中尝试一下。我没有意识到有必要下载整个库。我希望通过代码更容易理解解决方案。无论如何,我会检查一下,如果我有任何进一步的问题,请告诉您。现在谢谢!
    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2022-01-09
    • 2021-05-17
    • 2020-05-04
    • 1970-01-01
    相关资源
    最近更新 更多