graphql 服务器端验证

jsp*_*pru 5 validation sequelize.js graphql apollo-server

我只想了解人们认为在使用 graphql/orm 设置的服务器上验证用户输入文件(例如 url 或电子邮件地址)的最佳实践。

我的应用程序使用 apollo server / gql 和 sequelize 作为 orm。

我见过一些人在 sequelize 中对模型进行验证,并在 graphql 解析器中使用验证库或使用自定义标量进行其他验证示例。

任何一种方式都可取?谢谢。

sli*_*wp2 3

输入验证是某种AOP,如身份验证和授权。据我所知,有五种方法可以做到这一点。

  • 使用一般方法在解析器中进行验证,例如if (validationPass) {...} else {..}- 太冗长,保持解析器精简是最佳实践。因为它是某种路由层。不推荐
  • 使用组合库(例如graphql-resolvers)在解析器中进行验证- 推荐
  • 使用一些装饰器或模型模式定义在模型层 (ORM) 中进行验证。- 无论您使用 GraphQL、gRPC、soap WSDL、RESTful API,这都是传统的有效方式。源自经典的MVC软件开发思想。推荐
  • GraphQL 模式指令中的验证 - 有点复杂,不推荐
  • GraphQL中间件中的验证- 有点复杂,您需要设计中间件并将验证规则映射到相应的 Query 和 Mutation,您很可能需要使用参数info来获取 GraphQL 操作。不推荐