validation - graphql 服务器端验证

标签 validation graphql sequelize.js apollo-server

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

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

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

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

最佳答案

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

  • 使用一般方法在解析器中进行验证,例如if (validationPass) {...} else {..} - 过于冗长,保持解析器精简是最佳实践。因为它是某种路由层。不推荐
  • 使用组合库在解析器中进行验证,例如graphql-resolvers - 推荐
  • 使用一些装饰器或模型模式定义在模型层 (ORM) 中进行验证。 - 无论您使用 GraphQL、gRPC、soap WSDL、RESTful API,这都是传统的有效方式。源自经典的MVC软件开发理念。推荐
  • GraphQL 模式指令中的验证 - 有点复杂,不推荐
  • GraphQL 中的验证 middleware - 有点复杂,你需要设计中间件并将验证规则映射到相应的Query和Mutation,你很可能需要使用info参数以获取 GraphQL 操作。不推荐
  • 关于validation - graphql 服务器端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517793/

    相关文章:

    mysql - 如何更新和附加值到多对多 Sequelize 实现

    javascript - Joi 验证 ||在对象数组中,至少一个对象应包含某个键的特定值

    node.js - sequelize.js 中的动态默认范围

    如果字段为空,则跳过 Javascript 密码验证

    graphql - 如何使用 where 子句执行 WpGraphQL 查询?

    enums - GraphQL 枚举联合解决方法?

    graphql - Relay.js 是否支持多个 session 的同构服务器端渲染?

    node.js - 多对多自关联 Sequelize

    javascript - 使用 parsleyjs onkeyup 验证

    php - 锂和验证复杂形式的输入 - 如何?