简介
Apollo Server 是一个用于构建 GraphQL API 的开发工具包,它可以用于多种前端和后端技术栈,非常灵活。
本文将介绍如何使用 Apollo Server 构建 GraphQL API,并分享一些最佳实践。
快速开始
为了开始使用 Apollo Server,需要先安装它:
npm install apollo-server
然后在你的项目中引入它:
const { ApolloServer, gql } = require('apollo-server');
接下来,你需要定义你的 schema 和数据源,例如使用硬编码的数组作为数据源:
-- -------------------- ---- ------- ----- ----- - - - ------ ---- ----------- ------- ----- -------- -- - ------ ----- -- ------- ------- ----- -------- -- -- -- -- ------ ----- -------- - ---- ---- ---- - ------ ------ ------- ------ - ---- ----- - ------ ------ - -- -- -- -------- ----- --------- - - ------ - ------ -- -- ------ -- --
最后,创建一个 Apollo Server 实例并启动它:
const server = new ApolloServer({ typeDefs, resolvers, }); server.listen().then(({ url }) => { console.log(`Server ready at ${url}`); });
现在你就可以访问你的 API 了,比如在浏览器中打开 http://localhost:4000/
,你应该会看到类似于以下的输出:
-- -------------------- ---- ------- - ------- - -------- - - -------- ---- ----------- --------- ----- ------- -- - -------- ----- -- ------- --------- ----- ------- - - - -
最佳实践
使用 DataLoader
如果你的数据源是比较大的,你可能需要使用 DataLoader 来批量加载数据并减少请求次数。
-- -------------------- ---- ------- ----- ---------- - ---------------------- ----- ------------- - --- ----------------- -- - ----- --------- - --- ------------------------ -- - -------------------- - ------- --- ------ -------------- -- ---------------- --- ----- --------- - - ----- - -- -------- ------- ------ -- ---------------------------------- -- --
处理错误
当接口请求失败时,我们需要将错误信息返回给客户端以便他们处理。在 Apollo Server 中,默认情况下,如果 resolver 抛出了错误,它会被返回给客户端。
const resolvers = { Query: { book: (parent, args) => { // 如果找不到书,抛出错误 throw new Error(`Book with id ${args.id} not found`); }, }, };
如果你想自定义错误处理方式,你可以添加 formatError
选项:
const server = new ApolloServer({ typeDefs, resolvers, formatError: (error) => { console.log(error); return error; }, });
实现订阅
Apollo Server 支持实时订阅,你可以使用 graphql-subscriptions
库来实现它。
-- -------------------- ---- ------- ----- - ------------- --- - - ------------------------- ----- - ------ - - --------------------------------- ----- ------ - --- --------- ----- -------- - ---- ---- ---- - ------ ------ ------- ------ - ---- ------------ - ---------- ---- - -- ----- --------- - - ------------- - ---------- - ---------- -- -- ------------------------------------- -- -- -- ----- ------ - --- -------------- --------- ---------- --- ----------------------- --- -- -- - ---------------------- -- --------- -------------- -- - ---------------------------- - ---------- - ------ ----- -------------------------- - ------- ------- ---------- -- --- -- ------ ---
结论
Apollo Server 是一个非常好用和灵活的工具包,有了它,我们可以很方便地构建和管理 GraphQL API。本文介绍了使用 Apollo Server 的基本方法和一些最佳实践,希望对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ee95426fbf96019724e714