导入 GraphQL API

GraphQL 是 API 的已开源的行业标准查询语言。 基于终结点的(或 REST 样式的)API 围绕资源操作进行设计,而 GraphQL API 与它不同,它支持更广泛的一组用例,并且专注于数据类型、架构和查询。

通过使用 API 管理来公开 GraphQL API,你可以:

  • 通过 Azure 门户、Azure CLI 或其他 Azure 工具将 GraphQL 终结点或 GraphQL 架构添加为 API。
  • (预览版)使用 REST 或 SOAP API 中的信息来增强或设计 GraphQL API,并将 HTTP 解析程序用于 GRAPHQL 架构中定义的字段。
  • 应用现有访问控制策略和 GraphQL 验证策略来保护 GraphQL API,从而防范和抵御特定于 GraphQL 的攻击。
  • 在 Azure 和开发人员门户中查看架构并针对 GraphQL API 运行测试查询。

注意

  • API 管理中的单个 GraphQL API 只能映射到单个 GraphQL 后端终结点。
  • GraphQL API 需要 GraphQL 架构,无论是从现有 GraphQL 终结点还是由你上传。
  • API 管理支持 GraphQL 架构中的查询、变更和订阅操作类型。
  • 消耗服务层级中不支持订阅。
  • 必须使用 graphql-ws WebSocket 协议来实现订阅。 WebSocket 不支持查询和变更。

在本文中,你将:

  • 将直通 GraphQL API 添加到 API 管理实例。
  • 测试 GraphQL API。

如果要导入 GraphQL 架构并使用 REST 或 SOAP API 终结点设置字段解析程序,请参阅导入 GraphQL 架构并设置字段解析程序

先决条件

添加 GraphQL API

  1. Azure 门户,导航到 API 管理实例。

  2. 在左侧菜单中,选择“API”>“+ 添加 API”。

  3. 在“定义新 API”下,选择“GraphQL”图标 。

    Screenshot of selecting GraphQL icon from list of APIs.

  4. 在对话框中,选择“完整”并填写必填的表单字段。

    Screenshot of fields for creating a GraphQL API.

    字段 说明
    显示名称 GraphQL API 的显示名称。
    名称 GraphQL API 的原始名称。 键入显示名称时自动填充。
    GraphQL 类型 选择要从现有 GraphQL API 终结点导入的直通 GraphQL。
    GraphQL API 终结点 带有 GraphQL API 终结点名称的基 URL。
    例如:https://example.com/your-GraphQL-name。 你还可以使用常见的“swapi”GraphQL 终结点(例如 https://swapi-graphql.azure-api.cn/graphql)作为演示。
    上传架构 (可选)选择浏览并上传你的架构文件,以替换从 GraphQL 终结点检索到的架构(如果可用)。
    说明 添加 API 的说明。
    URL 方案 根据 GraphQL 终结点进行选择。 如果 GraphQL API 包含订阅类型,请选择其中一个包含 WebSocket 方案(WSWSS)的选项。 默认选择:HTTP(S)
    API URL 后缀 添加 URL 后缀以在该 API 管理实例中标识此特定 API。 在该 API 管理实例中,后缀必须唯一。
    基 URL 显示 API 基 URL 的不可编辑字段
    标记 将 GraphQL API 与新标记或现有标记关联。
    产品 将 GraphQL API 与产品关联来发布它。
    对此 API 进行版本控制? 选择向你的 GraphQL API 应用某个版本控制方案。
  5. 选择“创建”。

  6. 创建 API 后,在“设计”选项卡上浏览或修改架构。Screenshot of exploring the GraphQL schema in the portal.

测试 GraphQL API

  1. 导航到 API 管理实例。

  2. 在侧面导航菜单中的“API”部分下,选择“API” 。

  3. 在“所有 API”下,选择 GraphQL API。

  4. 选择“测试”选项卡以访问“测试”控制台。

  5. 在“标头”下:

    1. 从“名称”下拉菜单中选择标头。
    2. 在“值”字段中输入值。
    3. 选择“+ 添加标头”来添加更多标头。
    4. 使用垃圾桶图标删除标头。
  6. 如果已将产品添加到 GraphQL API,请应用“应用产品范围”下的产品范围。

  7. 在“查询编辑器”下:

    1. 从侧菜单中的列表中选择至少一个字段或子字段。 选择的字段和子字段将显示在查询编辑器中。

    2. 开始在查询编辑器中键入内容来撰写查询。

      Screenshot of adding fields to the query editor.

  8. 在“查询变量”下,添加变量来重用相同的查询或变更,并传递不同的值。

  9. 选择“发送”。

  10. 查看响应。

    Screenshot of viewing the test query response.

  11. 重复上述步骤以测试不同的有效负载。

  12. 测试完成后,退出测试控制台。

注意

可以在测试控制台中测试订阅:

  • 在查询编辑器中设置订阅查询,然后选择“连接”以便与后端服务建立 WebSocket 连接。
  • 在“订阅”窗格中查看连接详细信息。
  • 在断开 WebSocket 连接或连接到新的 WebSocket 订阅之前,将一直保持 WebSocket 连接。

测试订阅

如果 GraphQL API 支持订阅,则可以在测试控制台中对其进行测试。

  1. 确保 API 允许适用于你的 API 的 WebSocket URL 方案(WS 或 WSS)。 可以在“设置”选项卡上启用此设置。

  2. 在查询编辑器中设置订阅查询,然后选择“连接”以便与后端服务建立 WebSocket 连接。

    Screenshot of a subscription query in the query editor.

  3. 在“订阅”窗格中查看连接详细信息。

    Screenshot of Websocket connection in the portal.

  4. 订阅的事件会在“订阅”窗格中。 在断开 WebSocket 连接或连接到新的 WebSocket 订阅之前,将一直保持 WebSocket 连接。

    Screenshot of GraphQL subscription events in the portal.

保护 GraphQL API

同时应用现有访问控制策略GraphQL 验证策略来保护 GraphQL API,以防范特定于 GraphQL 的攻击。

后续步骤