GraphQL 是一种用于API的查询语言,它可以让前端工程师轻松地向后端发起请求,并且只返回需要的数据,减少了不必要的网络请求开销,提高了应用程序的性能。在 Fastify 中测试 GraphQL API 是前端开发工作中一个非常重要的环节,本文将会介绍如何在 Fastify 中测试 GraphQL,详细讲解测试的方法以及预期的输出结果。
准备工作
在开始测试 GraphQL API 之前,我们需要先安装一些依赖。因为我们使用 Fastify 和 GraphQL,所以我们需要安装这两个模块。
npm install fastify graphql
创建 GraphQL schema
在开始测试 GraphQL API 之前,我们需要先创建一个 GraphQL schema。GraphQL schema 定义了一个 GraphQL API 的类型系统,我们需要定义 API 的所有数据类型以及数据交互方式。
-- -------------------- ---- ------- ----- - ----------- - - ------------------- -- ------ ----- -------- - --- ------------- ---- ---- - --- --- ----- ------- ---- ---- - --- -- ------ ----- --------- - --- ------------- ---- ----- - ----------- ----- ---- - --- -- ------ ----- ------ - ------------- ------------ ------------ ---
创建 Fastify API
我们需要通过 Fastify 创建一个 API,使我们可以向 GraphQL 发送请求并获得响应。我们可以将 Fastify 和 GraphQL 集成在一起,通过 Fastify 发送请求到 GraphQL API 并获得响应。
-- -------------------- ---- ------- ----- ------- - --------------------- ----- - ------- - - ------------------- ----------------------- ----- ----- ---- -- - ----- - ----- - - ---------- ----- ------ - ----- --------------- ------- -------------------------------------------------------------------- --- -------------------- -- -- - ------------------- ------- -- -------------------------------- ---
测试 GraphQL API
现在我们已经创建了 GraphQL schema 并集成了 Fastify,我们现在可以使用测试工具轻松地测试 GraphQL API 了。在本例中,我们将所选的测试工具为 graphql-request
,但你可以选择你喜欢的任何 GraphQL 工具进行测试。
首先,我们需要安装 graphql-request
:
npm install graphql-request
现在,我们可以使用 graphql-request
发送请求到 Fastify API 并获得响应。例如,以下是获取 ID 为 “1” 的用户的查询:
-- -------------------- ---- ------- ----- - -------- --- - - --------------------------- ----- ----- - ---- - ----------- ---- - -- ---- - - -- ---------------------------------------- ------------------ -- ----------------- --
输出结果应该类似于以下结果:
{ "getUser": { "id": "1", "name":"John" } }
总结
至此,我们已经学习了如何在 Fastify 中测试 GraphQL。通过本文,你知道了如何创建 GraphQL schema,集成 Fastify 和创建 GraphQL API,并使用 graphql-request
进行测试。希望这篇文章对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646c8cca968c7c53b0b82de2