什么是 @nicolasparada/graphql-middlewares?
@nicolasparada/graphql-middlewares 是一个基于 GraphQL 查询和响应的中间件集合,支持 Apollo Server 和 Express server。
为什么要使用中间件?
在 GraphQL 查询和响应的过程中,我们可能需要一些额外的处理和操作,例如:
- 对查询进行权限控制
- 添加日志
- 对返回结果进行格式化
- 等等
将这些操作直接写在查询和响应的代码中,会导致代码可读性和可维护性变差。而使用中间件,可以很好地解决这些问题。
如何使用 @nicolasparada/graphql-middlewares?
1. 安装
在命令行中执行以下命令进行安装:
npm install @nicolasparada/graphql-middlewares
2. 引入中间件
首先,我们需要定义一些中间件,例如:
-- -------------------- ---- ------- ----- - --------------- - - ---------------------------------------------- -------- ----------------------------- - --------------------- ------- ---------------------------------- - -------- ------------------------------------ - -- ----------------------------- --- ------------ -- -------------------------------------- - ----- --- ------------------- - -展开代码
在上面的例子中,我们定义了两个中间件,一个是用于输出查询名称的日志中间件,另一个是用于权限控制的中间件。
3. 应用中间件
将中间件应用到 GraphQL Schema 中,例如:
-- -------------------- ---- ------- ----- - ------------ - - ------------------------- ----- - --------------- - - ---------------------------------------------- ----- -------- - ------ ----- --------- - - --- -- ----- ------ - --- -------------- --------- ---------- -------- -- --- -- -- -- ----- -------- --- -- ------- ------- - --- ----------------------- -------------- ---------------------- -- ----- ----------------------- --- -- -- - ------------------- ------- -- --------- ---展开代码
在上面的例子中,我们将应用了两个中间件的 server
传入 applyMiddleware
函数中,即可完成中间件的应用。
总结
使用 @nicolasparada/graphql-middlewares,可以很方便地编写和应用 GraphQL 的中间件,提高代码的可读性和可维护性。
当然,在实际项目中,可能需要编写更复杂和个性化的中间件,这需要我们根据实际情况进行深入学习和掌握,以更好地应对项目需求。
示例代码
-- -------------------- ---- ------- ----- - --------------- - - ---------------------------------------------- -------- ----------------------------- - --------------------- ------- ---------------------------------- - -------- ------------------------------------ - -- ----------------------------- --- ------------ -- -------------------------------------- - ----- --- ------------------- - - ----- - ------------ - - ------------------------- ----- -------- - - ---- ----- - ----------- ------ ------------ ------ - -- ----- --------- - - ------ - ----------- -- -- ------ ------- ------------ -- -- ------- ------- -- -- ----- ------ - --- -------------- --------- ---------- -------- -- --- -- -- -- ----- -------- --- --- ----------------------- -------------- ---------------------- ----------------------- --- -- -- - ------------------- ------- -- --------- ---展开代码
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005580b81e8991b448d5301