GraphQL 是一种前端领域较新的技术,它可以帮助你更高效地编写 API,查询更少的数据,减少网络传输量以及提高页面性能等优点。在实际使用过程中,繁琐的代码操作往往会让开发者头疼不已。所以,今天我要介绍一款自带模板的 npm 包 @graphql-guru/express-server,帮助大家更好地使用 GraphQL 教程。
安装
使用 npm 安装 @graphql-guru/express-server:
npm install --save @graphql-guru/express-server
同时,需要安装一下 express 和 graphql:
npm install express graphql
使用步骤
1.首先,我们需要引入 @graphql-guru/express-server
const { ApolloServer } = require("@graphql-guru/express-server");
2.配置 GraphQL 服务
-- -------------------- ---- ------- -- -- ------- ----- ----- -------- - ---- ---- ----- - ------ ------ - -- -- -- ----- ----- --------- - - ------ - ------- - ------ ------ ------- -- -- -- -- --- ------------ ----- ------ - --- -------------- --------- ---------- ---
3.将 GraphQL 服务应用于 Express
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ---------- - ----------------------- -- --- ------- ----- --- - ---------- -- -- ---------- --- ---- ------- --------------------------- -- - ------- --- ------- ------------------------ --- ---
至此,GraphQL 服务的配置已经完成,通过访问 http://localhost:3000/graphql
,可以查看 GraphQL Playground 调试工具。
4.添加 GraphQL 路由
你也可以手动指定一个路由,来让 GraphQL 服务运行在指定的路由下。
app.use("/my-graphql-endpoint", graphqlExpress({ schema: myGraphQLSchema }));
接下来,我们只需要在 my-graphql-endpoint
路由中访问 GraphQL Playground 即可。
@graphql-guru/express-server 支持的选项
ApolloServer
接受以下选项:
typeDefs: String 或 Array,包含 GraphQL 定义的字符串。如果使用字符串,则 Apollo Server 将通过 parse 从字符串文本解析 schema。
resolvers: [Object] 或 {Object},此对象将传递给 makeExecutableSchema 函数,该函数使用此对象解析 GraphQL schema。如果此参数是数组,则 Apollo Server 将合并它们,并使用 .reduce()方法合并对象。
formatError: function,用于将 GraphQLError 转换为 前端可读的格式,提高调试效率。
rootResolvers: Object,GraphQL 查询的根解析对象。
context: function,获取请求上下文的回调函数的函数。要深入了解上下文,请参阅上下文文档。
resolverValidationOptions: Object,用于配置解析器验证的选项。使用参见Validating Resolvers。
总结
通过使用完全自定义的 API 和高级技术,@graphql-guru/express-server 帮助开发者快速构建功能强大的 GraphQL API,并增加额外的便利性。它能够帮助开发者减轻 GraphQL 的工作量,快速搭建可重复使用的工具和功能,进而增加项目效率和减轻工作量。当然,其中也有很多需要改进和探索的地方,希望大家在使用的过程中也能提供意见建议,帮助更多前端开发者更好地进行 GraphQL 开发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055ebb81e8991b448dc6ff