我一直在尝试通过阅读文章来理解 GraphQl 以及它是如何使用的。 我已经了解了如何通过 graphQl 创建 api,但是我还没有看到一篇文章演示第三方如何调用 graphQl api。
根据我的经验,我主要使用
httparty
gem 调用 RESTful api(我在 Rails 上使用 ruby),其格式如下:
HTTParty.post(url, headers, body)
。
但是,调用 graphQL api 的人会如何发出此请求呢?他们是否需要将 graphql 安装到他们的应用程序中才能发出请求?(理想情况下所有内容都应该在 api 文档中?)或者我是否误解了 graphql 的工作原理?
您走在正确的道路上。 在 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 请求,因此需要确保检查文档以了解支持哪些请求方法
无需安装 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)