最近我很喜欢与AWS Amplify一起工作,它基于定义的模式的GraphQL查询的代码生成非常出色。
我在定义自定义逻辑/验证服务器端时遇到了一个麻烦。 AppSync(负责Amplify中的GraphQL api的部分)直接为您的模式生成解析器和DynamoDB表。解析器是使用Apache Velocity模板语言创建的,如果您不熟悉它,我认为它有点像学习曲线。
此外,这些解析器由Amplify cli自动生成。我不确定在AppSync控制台中还是在本地编辑它们是否有意义,因为每次我们推送api更改时,它们是否会再次自动生成?
此外,这些自动生成的解析器实际上在将类型模型链接在一起,启用搜索和身份验证检查方面取得了很多成就,我真的不想碰它们,因为自动生成启用的开发速度非常疯狂
因此,引入我的自定义逻辑的唯一其他解决方案似乎是Lambda函数,它们侦听关联的DynamoDB表的创建/更新事件。
我想我可以按照下面演示的方式进行设置,本质上是允许用户正常使用GraphQL api以及何时需要进行服务器验证的操作在lambda中对其做出反应?
例如,玩家将物品添加到他们的库存中,我们启动lambda函数以检查玩家之前是否有该物品,如果没有购买,我们将验证物品数据并从玩家表中扣除其成本中的黄金。我认为这很好,但我担心的是
我想念其他东西吗?
因此,lambda将在后台进行验证,我们假设大多数用户在这里都是好演员,并且他们传递给GraphQL api的数据是正确的,因为他们使用了我们的客户端。
万一数据出人意料(坏演员),lambda会做出反应并禁止用户。
此解决方案可行/通用吗,还有其他选择吗?