graphql 服务器端验证
Posted
技术标签:
【中文标题】graphql 服务器端验证【英文标题】:graphql server side validation 【发布时间】:2019-12-22 08:59:12 【问题描述】:我只是想了解人们认为使用 graphql / orm 设置在服务器上验证用户输入文件(例如 url 或电子邮件地址)的最佳实践。
我的应用程序正在使用 apollo server / gql 和 sequelize 作为 orm。
我见过一些人在 sequelize 中对模型进行验证,以及在 graphql 解析器中使用验证库或使用自定义标量进行验证的其他示例。
有任何一种方式更可取吗?谢谢。
【问题讨论】:
【参考方案1】:输入验证是某种AOP,如身份验证和授权。据我所知,有五种方法可以做到这一点。
使用一般方法在解析器中进行验证,例如if (validationPass) ... else ..
- 过于冗长,保持解析器精简是最佳实践。因为它是某种路由层。不推荐
使用组合库在解析器中进行验证,例如graphql-resolvers - 推荐
使用一些装饰器或模型模式定义在模型层 (ORM) 中进行验证。 - 无论您使用 GraphQL、gRPC、soap WSDL、RESTful API,这都是传统的有效方式。源自经典的MVC软件开发思路。推荐
GraphQL 模式指令中的验证 - 有点复杂,不推荐
GraphQL 中的验证middleware - 有点复杂,您需要设计中间件并将验证规则映射到相应的 Query 和 Mutation,您很可能需要使用 info
参数来获取 GraphQL 操作。不推荐
【讨论】:
感谢您的概述。由于 Sequelize 已经支持它,所以我最终在模型层中进行了操作。以上是关于graphql 服务器端验证的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从 Relay 突变访问 GraphQL 验证错误?