调用第三方graphql api

问题描述 投票:0回答:2

我一直在尝试通过阅读文章来理解 GraphQl 以及它是如何使用的。 我已经了解了如何通过 graphQl 创建 api,但是我还没有看到一篇文章演示第三方如何调用 graphQl api。

根据我的经验,我主要使用

httparty
gem 调用 RESTful api(我在 Rails 上使用 ruby),其格式如下:
HTTParty.post(url, headers, body)

但是,调用 graphQL api 的人会如何发出此请求呢?他们是否需要将 graphql 安装到他们的应用程序中才能发出请求?(理想情况下所有内容都应该在 api 文档中?)或者我是否误解了 graphql 的工作原理?

ruby-on-rails graphql
2个回答
1
投票

您走在正确的道路上。 在 GraphQL API 中,客户端(第三方应用程序)可以通过向服务器发送 GraphQL 查询来发出请求,服务器将返回 JSON 格式的响应

要发出 GraphQL 请求,客户端通常会向 GraphQL API 端点发送 POST 请求,其中包含包含 GraphQL 查询的 JSON 负载。 请求还可以包含变量,这些变量可用于将动态数据传递给查询。 示例:

    POST /graphql HTTP/1.1
    Content-Type: application/json
    Authorization: Bearer <token>

    {
      "query": "query ($id: ID!) { user(id: $id) { name } }",
      "variables": {
        "id": "123"
      }
    }

在此示例中,要求 GraphQL 返回 ID 为 123 的用户的名称。查询字段包含 GraphQL 查询,变量字段包含变量 id,用于获取具有给定 id 的用户

客户不需要将 GraphQL 安装到他们的应用程序中。 客户端可以使用任何支持使用 JSON 负载发送 POST 请求的 HTTP 客户端库,例如 Ruby 中的 httparty。 客户端不需要了解有关 GraphQL 架构或类型的任何信息,因为可以在 API 文档中找到该信息。

关于使用 GraphQL 进行 GET 与 POST 请求的说明;通常建议对需要变量或突变的更复杂查询使用 POST 请求。 GET 请求最适合不需要复杂输入的简单查询。 关于 GET 请求的另一个警告是,某些 GraphQL API 可能不支持 GET 请求,因此需要确保检查文档以了解支持哪些请求方法


0
投票

无需安装 GraphQL,因为它是一种不可知规范,类似于 RESTful 服务。 GraphQL 告诉您(在架构中)您需要发送什么才能接收您的响应。

例如,如果我调用 Books API,我会发送一个 GET 请求来获取如下所示的图书列表:

//request
HTTP GET /books

//response
{[
{
  "bookId":34443,
  "author":"Borges",
  "title":"Otras inquisiciones"
},
{
  "bookId":34445,
  "author":"Borges",
  "title":"Ficciones"
}
]}

区别(准确地说,是众多区别之一)是 GraphQL API 允许您选择所需的数据,在本例中:

//GraphQL exposes a single endpoint to the outer world
//request
HTTP POST /graphql 
//body
query{
  allbooks{
    title
  }
}

//response
{[
{
  "title":"Otras inquisiciones"
},
{
  "title":"Ficciones"
}
]}

因此,在您的情况下,您应该将

body
格式化为与您尝试使用的 GraphQL API 架构一致,并将其通过 HTTP POST 请求发送到端点:
HTTParty.post(url, headers, body)

© www.soinside.com 2019 - 2024. All rights reserved.