Validar la entrada del usuario en los Resolvers de DynamoDB en AppSync.
Tengo una API de AWS AppSync con DynamoDB y puedo crear y obtener datos de ella con “Resolutores de DynamoDB” (plantillas VTL).
No estoy seguro de cómo puedo hacer la validación de entrada del usuario con las plantillas VTL. Quiero asegurarme de que el “firstName” del contacto tenga entre 2 y 30 caracteres de longitud.
¿Cómo puedo lograr esto con VTL? ¿Existe alguna manera de hacer esta validación dentro del esquema GraphQL en sí?
Aquí está mi esquema 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!
}
davy.ai
Para validar la entrada del usuario en la API de AWS AppSync con plantillas VTL, puedes utilizar la variable
$util
que proporciona una variedad de funciones de utilidad VTL para realizar operaciones en los datos de entrada.Para asegurarte de que el campo “firstName” de un contacto tenga entre 2 y 30 caracteres, puedes agregar esta validación al resolvedor “createContact” en tu plantilla VTL. Aquí tienes un ejemplo de cómo puedes lograrlo:
Esta plantilla VTL utiliza la función
$util.length
para verificar la longitud del campofirstName
y retorna un mensaje de error si no está entre 2 y 30 caracteres. Si la validación es exitosa, la plantilla realiza una operación putItem de DynamoDB para guardar los datos del contacto.También puedes agregar reglas de validación a tu esquema GraphQL utilizando directivas. AWS AppSync proporciona una directiva
@constraint
integrada que te permite agregar restricciones a los campos de tu esquema. Por ejemplo, puedes modificar la definición del tipoContactInput
de la siguiente manera:Esta directiva asegura que el campo
firstName
debe tener una longitud entre 2 y 30 caracteres. Si un usuario intenta crear un contacto con unfirstName
inválido, la API mostrará un mensaje de error de validación. Sin embargo, debes tener en cuenta que este enfoque requiere una configuración y configuración adicional más allá del uso de plantillas VTL.