GraphQL 是一种新型的 API 架构,它提供了一种更高效、更强大的方式来获取数据。然而,使用 GraphQL 和 Express 并不是那么容易。随着应用程序变得越来越复杂,通常需要将查询缓存起来,以提高查询效率。这时一个方便的解决方案便是使用 GraphQL Express Persisted Query。
什么是 GraphQL Express Persisted Query
GraphQL Express Persisted Query 是一个 npm 包,它为 Express 服务器添加了一个新的中间件。使用此中间件可以使 Express 服务器接受来自客户端的参数,以便将此查询转换为一个哈希值,并将其与查询文本一起保存在缓存中。这样,每次客户端请求相同的查询时,都会使用缓存的查询,从而提高性能。
如何使用 GraphQL Express Persisted Query
首先,安装 GraphQL Express Persisted Query:
npm i graphql-express-persisted-query --save
然后,将它作为 Express 服务器的中间件使用:
-- -------------------- ---- ------- ------ ------- ---- ---------- ------ - -------------- - ---- ------------------------- ------ - ------------------------------ - ---- ---------------------------------- ------ ------ ---- ----------- ----- --- - ---------- ------------------- ---------------------------------- ------------------- ---------------- ------ ---- -----------------
现在,您可以向您的客户端发送一个参数extensions.persistedQuery
,以从缓存中获取查询。如果客户端未发送查询,则此查询将执行后发送到服务器端进行哈希和缓存。
例如,以下代码片段在向服务器请求时将查询转换为哈希值并将其保存在缓存中:
-- -------------------- ---- ------- ----- -------------- - - ------- ------- -------- - --------------- ------------------ -- ----- ---------------- ------ - ----- ----- ---- - -------- ---- - --------- -------- - - -- ---------- - --- ----- -- ----------- - --------------- - -------- -- ----------- ------------------------------------------------------------------ - - -- -- ----------------- ----------------
注意,extensions.persistedQuery.sha256Hash
实际上是该查询文本的哈希值,在实际使用中需要先将查询文本哈希为一个字符串,然后将其传递到客户端。
如果您无法使用客户端参数,请参考此示例,该示例在服务器端检查查询并返回哈希值:
-- -------------------- ---- ------- ------ - ------- - ---- ---------- ------ - ------------ - ---- ---------------------------------- ------ ------ ---- ----------- ------------------- ----- ---- ----- -- - ----- ----- - --------------- ----- ---- - -------------------- -- ------- - ------ ------- - ------------------- - ------------------- -- --- ---------------------------------- - - -------- -- ----------- ---- -- --------------- ------ ----- ---- ---------------- -- - ----------------- --- ---
现在,每次客户端发送相同的查询时,都将从缓存中获取查询,以提高性能。
总结
GraphQL Express Persisted Query 是在 Express 服务器上使用 GraphQL 的最佳方式之一。它能够提高性能,避免在多次查询时重复执行查询。如果你正在使用 GraphQL 和 Express,那么这是一个值得尝试的 npm 包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600560aa81e8991b448dee9a