维护的恶梦!如何在 GraphQL schema 中处理冗余 / 遗漏?

GraphQL是一种强大而灵活的API查询语言。然而,如果你的GraphQL schema存在冗余或遗漏,维护起来就会变得十分困难,因为它可能导致API查询错误,甚至数据泄露。在本文中,我们将探讨如何在GraphQL schema中处理冗余和遗漏。

什么是冗余和遗漏?

冗余通常是指在GraphQL schema中定义了不必要的类型或字段。例如,如果你的schema中有一个Customer类型和一个User类型,但在实际情况中,这两个类型在含义上是相同的,那么它们就是冗余的。同样地,如果你有一个email和一个Email字段,但你只想使用其中一个,那么它们也就是冗余的。

遗漏指的是在GraphQL schema中缺少类型或字段。例如,假设你的数据库中有一个Product表,但GraphQL schema中没有相应的类型或字段,那么你就会遇到一个遗漏的情况。

如何避免冗余和遗漏

消除冗余

消除冗余最好的方法是使用一个规范化的数据模型。例如,如果你使用了ORM或者其他的映射工具,它们通常会自动将数据库模型转换为GraphQL schema。同时,你也需要确保你的字段名和类型语义上是一致的。

如果你发现了冗余,可以使用GraphQL的指令来解决它们。指令可以应用于类型或字段上,在查询时对它们进行修改。例如,你可以在一个类型上使用@deprecated指令,并提供一个替代方法的注释,来标记一个过时的字段。

处理遗漏

处理遗漏最好的方法是在GraphQL schema中添加缺少的类型和字段。当你添加新的类型时,你需要确保它们的类型语义上是正确的,并且它们需要与数据模型相对应。

当你添加一个字段时,你需要确保它们在类型中的位置是正确的,它们需要被正确地解析,同时也需要与查询语言保持一致。为了确保所有的字段都被正确地添加到schema中,你可以使用代码生成器。

示例代码

- ------- ----
---- ------- -
  --- ---
  ----- -------
  ------------ -------
  ------ ------
  ------ -------
-

- ----- ----
---- ----- -
  ----------- ----- -------
-

- -------- ----
---- -------- -
  ------------------- -------- ------------ -------- ------ ------- ------ --------- --------
  ----------------- ---- ----- -------- ------------ -------- ------ ------- ------ --------- --------
  ----------------- ----- --------
-

在这个示例中,我们定义了一个Product类型,它有idnamedescriptionpriceimage这些字段。我们还定义了Query类型,该类型允许我们查询单个产品。我们还定义了Mutation类型,它允许我们创建、更新和删除一个产品。

在这个例子中,我们遵循了最佳实践,并使用了一个规范化的数据模型。我们还确保了所有的字段都正确地添加到GraphQL schema中,并且它们被正确地解析和查询。

结论

GraphQL schema的冗余和遗漏是GraphQL应用程序中常见的问题。为了避免这些问题,你需要使用最佳实践来规范化你的数据模型,并确保所有字段都被正确地添加到GraphQL schema中。通过消除冗余和处理遗漏,你可以将维护你的GraphQL API的难度降至最低。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670a4c7cd91dce0dc88032a9