【问题标题】:graphql server side validationgraphql 服务器端验证
【发布时间】:2019-12-22 08:59:12
【问题描述】:

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

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

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

有任何一种方式更可取吗?谢谢。

【问题讨论】:

    标签: validation graphql sequelize.js apollo-server


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的概述。由于 Sequelize 已经支持它,所以我最终在模型层中进行了操作。
    猜你喜欢
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多