如何为 AWS 放大 GraphQL API 添加服务器端业务逻辑?
Posted
技术标签:
【中文标题】如何为 AWS 放大 GraphQL API 添加服务器端业务逻辑?【英文标题】:How to add server side business logic for a AWS amplify GraphQL API? 【发布时间】:2021-09-11 03:21:04 【问题描述】:可以在AWS docs > Designing your schema 上找到类似的以下架构。直到现在我才找到一个例子,其中只有状态为 PUBLISHED
的 ToDo 被 GraphQL API 公开。
type Todo
id: ID!
name: String
description: String
status: TodoStatus
enum TodoStatus
DRAFT
PUBLISHED
DELETED
所有 AWS Amplify 指令都在 here 和 @auth
中进行了描述,其中可以定义 ToDo 模型的授权规则,但这不是我想要的。此外,我认为functions 在我的情况下也无济于事,还是我错了?
知道如何制作状态为 DRAFT
和 DELETED
的 ToDo 项目无法通过 GraphAPI 访问(服务器端,而不是通过查询在前端)?
这是否可能和使用 Django and Django Graphene 之类的工具一样简单?
【问题讨论】:
【参考方案1】:似乎要走的路是custom resolver。
解析器位于 API 端点和数据库之间。他们决定谁可以访问这些数据,他们正在寻找什么数据,以及他们获得了多少数据。
DynamoDB 解析器是用 Velocity 模板语言 (*.vtl
) 编写的,这是一种许多开发人员可能不熟悉的语言,不幸的是 AWS 文档没有提供很多代码示例。
【讨论】:
这是一个很好的问题,我正在尝试自己寻找答案。但是这个答案违背了官方 GraphQL 建议,即拥有一个单独的业务逻辑层 (graphql.org/learn/authorization)。仍在寻找一个真实世界的 Amplify 示例。以上是关于如何为 AWS 放大 GraphQL API 添加服务器端业务逻辑?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 ECS 添加带有应用程序负载均衡器的 AWS API 网关?