在 AppSync DynamoDB 解析器中验证用户输入
Validate user input in AppSync DynamoDB Resolvers
我有 AWS AppSync API 和 DynamoDb,我可以使用 DynamoDb Resolvers 从中创建和获取数据。 (VTL 模板)
我不确定如何使用 VTL 模板进行用户输入验证。我想确保联系人的“名字”长度在 2 - 30 个字符之间。
如何使用 VTL 实现此目的?有没有办法在 GraphQL 模式本身中进行这种验证?
这是我的 GraphQL 模式,
schema {
query: Query
mutation: Mutation
}
type Mutation {
createContact(contact: ContactInput!): Contact!
}
type Contact {
contactId: ID!
firstName: String!
lastName: String!
email: String!
}
input ContactInput {
firstName: String!
lastName: String!
email: String!
}
我找不到在 GraphQL 中执行此操作的好方法,但您可以使用 $util.validate
或 $util.error
在 VTL 中轻松执行此操作(请参阅 the AWS documentation)。它们都具有将项目添加到 errors
数组的相同结果。
这是 $util.validate
的演示:
https://mappingtool.dev/app/appsync/bee55bd607e2166091451e7a7959318e
这是 $util.error
的演示:
https://mappingtool.dev/app/appsync/006d6c05e8bb7257c6cebce34494994c
我有 AWS AppSync API 和 DynamoDb,我可以使用 DynamoDb Resolvers 从中创建和获取数据。 (VTL 模板)
我不确定如何使用 VTL 模板进行用户输入验证。我想确保联系人的“名字”长度在 2 - 30 个字符之间。
如何使用 VTL 实现此目的?有没有办法在 GraphQL 模式本身中进行这种验证?
这是我的 GraphQL 模式,
schema {
query: Query
mutation: Mutation
}
type Mutation {
createContact(contact: ContactInput!): Contact!
}
type Contact {
contactId: ID!
firstName: String!
lastName: String!
email: String!
}
input ContactInput {
firstName: String!
lastName: String!
email: String!
}
我找不到在 GraphQL 中执行此操作的好方法,但您可以使用 $util.validate
或 $util.error
在 VTL 中轻松执行此操作(请参阅 the AWS documentation)。它们都具有将项目添加到 errors
数组的相同结果。
这是 $util.validate
的演示:
https://mappingtool.dev/app/appsync/bee55bd607e2166091451e7a7959318e
这是 $util.error
的演示:
https://mappingtool.dev/app/appsync/006d6c05e8bb7257c6cebce34494994c