Help us learn about your current experience with the documentation. Take the survey.

使用 GraphQL 查询用户

  • 版本:Free, Premium, Ultimate
  • 产品:GitLab.com, GitLab 自管版, GitLab 专属版

您可以通过以下方式查询 GitLab 实例中的一部分用户:

  • GraphiQL。
  • cURL

使用 GraphiQL

  1. 打开 GraphiQL:

    • 对于 GitLab.com,请使用:https://gitlab.com/-/graphql-explorer
    • 对于 GitLab 自管版,请使用:https://gitlab.example.com/-/graphql-explorer
  2. 复制以下文本并将其粘贴到左侧窗口中。 此查询通过用户名在 GitLab 实例中查找一部分用户。 或者,您也可以使用它们的 Global ID

     {
       users(usernames: ["user1", "user3", "user4"]) {
         pageInfo {
           endCursor
           startCursor
           hasNextPage
         }
         nodes {
           id
           username,
           publicEmail
           location
           webUrl
           userPermissions {
             createSnippet
           }
         }
       }
     }
  3. 选择 Play

GraphQL API 返回的是 GlobalID,而不是标准的 ID。 它也期望输入 GlobalID,而不是单个整数。

此查询会返回所列用户名对应的三个用户的指定信息。

  • 由于 GraphiQL 使用 session token 来授权对资源的访问,因此其输出结果仅限于当前已认证用户有权访问的项目和组。
  • 如果您以实例管理员身份登录,则可以访问所有资源。

仅显示管理员

如果您以管理员身份登录,可以在查询中添加 admins: true 参数,以显示实例中匹配的管理员。 将第二行更改为:

  users(usernames: ["user1", "user3", "user4"], admins: true) {
    ...
  }

或者,您可以获取所有管理员:

  users(admins: true) {
    ...
  }

分页和图节点

该查询包含:

pageInfo

其中包含了实现分页所需的数据。GitLab 使用基于游标的 分页 方式。 更多信息,请参阅 GraphQL 文档中的 分页 章节。

nodes

在 GraphQL 查询中,nodes 代表图中 节点 的集合。 在本例中,这个节点集合就是一组 User 对象。对于每一个节点,其输出包括:

  • 用户的 id
  • membership 片段,它代表了该用户所属的项目或组成员身份。片段通过 ...memberships 这种写法来表示。

相关主题