在前端开发中,经常需要处理 Restful API 的请求和响应。而同时,GraphQL 也逐渐为人所知。这时候,如果我们可以把 GraphQL 和 Restful API 结合起来,会给我们的开发带来很大的便捷。那么,如何实现这一目标呢?今天,我们来介绍一款可以帮助我们实现这一目标的 npm 包:graphql-compose-rest。
什么是 graphql-compose-rest
graphql-compose-rest 是一个 npm 包,该包使用了 compose 的概念。该包可以帮助我们将 Restful API 映射成 GraphQL 的 schema,并且能够自动生成基于 REST 的查询和变异。
如何使用
安装
安装命令如下:
npm install graphql-compose-rest
初始化 schema
我们需要使用 graphql-compose
来初始化我们的 GraphQL schema。我们可以使用如下方式创建 schema 文件:
-- -------------------- ---- ------- ----- - --------------- - - -------------------------------- ----- - -------------- - - --------------------------- ----- --------------- - - -------------- ----- -------- - - ----- -- -------- ---------- ------- ------- ------------- ----- -- - ----- -- -------- ---------- ------- ------- ------------- ----- - - -- ----- ------ - --------------------------------------------------- - ---------- - -- ------- --------- - --------- ----- -- ---- -- -- - ------------------ -------------------------- ----- - -- - - ----- ----- -------- - ----- -------------------------------------------------- ----- ---- - ----- ---------------- ------------------ -------------------------- ------ ----- -- ----- - --- ------- - - -- ------------ - --------------- ---------- -- - ------ --------------- -- ------------------- ------ -- - -- -- --- --- -------- ------ -- ---------- ----- ------ -------------- -- ------------ -- ----- -- -- - ------ --------------------- -- ---------------- -- -------- - -------------- ------- ----------------------- -- -- --- -------------------------------- ----- ------------------------------- --- -------------- - -----------------------------
在该示例代码中,我们定义了 UserTC 的 GraphQL schema,并定义了 UserTC 的查询解析器,该解析器将调用 REST API 来获取数据。并且,我们使用了 formatResponse
方法和 responseDataParser
方法来解析查询结果,使得我们可以获取我们需要的字段,并且将结果映射成 GraphQL 的类型。
初始化 Restful API resolvers
在初始化 schema 后,我们需要定义 Resful API 的解析器。可以使用如下代码:
-- -------------------- ---- ------- ----- - -------------- - - ---------------------------- ----- --------- - - -------- - ------------ --------------------- - -- -- - ------- -- -- - ------ --------------------------- --- -- ---------- - ----------- --------------------- ----- - ------- -- -- - ----- - ----- ----- - - ----- ------ ---------------------- - ----- ----- --- --- -- -------- - ---- ----------------------------- -------- - --------------- ------------------- -- ------ ---------------------- -- --
在上述代码中定义了两个请求,查询 getUserById
和变异 createUser
,该请求将调用 REST API。在这里,我们也使用了 node-fetch
来处理查询和变异的请求,并且定义了 REST API 的 headers。
启动 GraphQL 服务
最后,我们需要启动 GraphQL 服务。我们可以使用如下代码:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- - ----------- - - --------------------------- ----- - -------------------- - - ------------------------- ----- -------- - -------------------- ----- ------ - ---------------------- --------- --- ----- --- - ---------- -------- ----------- ------------- ------- --------- ----- -------- - -------- -- -- -- ---------------- -- -- - ------------------- ------- -- ------------------------ ---
在上述代码中,我们使用 express 搭建了一个服务,并且将我们的 GraphQL schema 和 resolvers 绑定到了该服务上。最后,我们可以在浏览器上访问 http://localhost:4000/graphql
来查看 GraphQL 的 Playground。
结论
graphql-compose-rest 是一个强大的 npm 包,使用它可以帮助我们将 Restful API 嵌入到 GraphQL 中。通过本文所述的方法,我们可以轻松地自动生成简单但强大的 API。如果你有一些经验,那么你可以根据自己的喜好和需求定制该 API,并且通过该 API 更快地开发出可扩展和易维护的应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005668181e8991b448e2a0b