GraphQL 是一种用于 API 的查询语言,它提供了一种更高效、更强大的方式来获取和修改数据。然而,有时候我们需要从已有的 REST API 中获取数据,这时候该怎么办呢?本文将介绍如何在 GraphQL 中使用 REST API 进行数据获取的解决方案。
问题
假设我们有一个 REST API,它能够返回一些 JSON 数据,例如:
{ "id": 1, "name": "John Doe", "email": "john.doe@example.com" }
我们想要在 GraphQL 中获取这个数据,我们可以这样写一个 GraphQL 查询:
query { user { id name email } }
但是,我们无法直接在 GraphQL 中调用这个 REST API,因为 GraphQL 和 REST API 是两种不同的技术。那么,该怎么办呢?
解决方案
我们可以使用 GraphQL resolver 来解决这个问题。GraphQL resolver 是一个函数,它能够将 GraphQL 查询映射到实际的数据源。我们可以编写一个 resolver 函数来调用 REST API 并返回数据。
下面是一个示例 resolver 函数:
-- -------------------- ---- ------- ----- ----- - ---------------------- ----- ------- - -------------------------- ----- --------- - - ------ - ----- ----- -- -- - ----- -------- - ----- ------------------------- ----- ---- - ----- ---------------- ------ ----- -- -- --
在这个示例中,我们使用了 node-fetch 库来发起 HTTP 请求。我们首先定义了 REST API 的 URL,然后在 resolver 函数中使用 fetch
函数来获取数据,最后将数据返回。
我们还需要将这个 resolver 函数注册到 GraphQL schema 中,例如:
-- -------------------- ---- ------- ----- - -------------------- - - ------------------------- ----- -------- - - ---- ---- - --- --- ----- ------ ------ ------ - ---- ----- - ----- ---- - -- ----- ------ - ---------------------- --------- ---------- ---
在这个示例中,我们定义了一个 User
类型和一个 Query
类型,然后将 resolver 函数注册到 Query
类型中。
现在,我们就可以在 GraphQL 中使用这个 resolver 函数了,例如:
query { user { id name email } }
总结
在使用 GraphQL 进行数据获取时,有时候我们需要从已有的 REST API 中获取数据。通过编写 resolver 函数,我们可以将 GraphQL 查询映射到实际的数据源,并返回数据。本文介绍了如何在 GraphQL 中使用 REST API 进行数据获取的解决方案,并提供了示例代码。希望本文能够对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65123ee295b1f8cacdaaa2f5