La creación de API REST conlleva muchos desafíos y uno de ellos es asegurarse de que la carga útil entrante del cliente sea válida y esté en el formato adecuado antes de enviarla al procesamiento adecuado o realizar alguna operación de alto costo, como la operación SQL o la operación de archivo. La validación de la API JSON en nodejs es un trabajo bastante elevado porque esperamos diferentes tipos de carga útil y datos en las API.
Estaba buscando algo que hiciera más que la prueba de cordura, es decir, el tipo de correo electrónico o cadenas vacías, etc. Quería algo que validara la estructura de la carga útil JSON con la que estoy esperando para la API.
Desafortunadamente, no he encontrado nada que se adapte a mis necesidades, así que trabajé en uno. Se llama “validador de carga útil” y hace la validación de su estructura JSON para API.
Validación de la API JSON en nodejs usando payload-validator
Para instalar el validador de carga útil, ejecute el siguiente comando.
–Save escribirá el nombre del paquete en su archivo JSON.
Cómo usar el validador de carga útil
Payload-validator tiene solo una función llamada “validador” y acepta el siguiente parámetro.
- Carga útil entrante
- Carga útil esperada
- Matriz de elementos obligatorios
- Bandera de valor en blanco permitido
Para usarlo en su código, requiera el validador de carga útil y llame a la función del validador con el parámetro anterior. A continuación se muestra un ejemplo de muestra.
Requerir el módulo
Llamar a la función de validador
// Busque la clave result.success que será verdadera o falsa dependiendo de la validación.
// si es falso, busque la clave result.response.errorMessage para saber más sobre el error del validador.
Proyecto de ejemplo
Desarrollemos un proyecto simple que se ocupa de la carga útil JSON. Creemos el paquete de muestra.json usando el comando npm init .
“name” : “payload-checker” ,
“version” : “1.0.0” ,
“description” : “” ,
“main” : “app.js” ,
“scripts” : {
“test” : “echo” Error : no se especificó la prueba “&& exit 1”
} ,
“autor” : “” ,
“licencia” : “ISC”
}
Instalemos Express y payload-validator en nuestro proyecto. Ejecute el siguiente comando.
Creemos nuestro archivo de aplicación de muestra con el código del servidor.
var bodyParser = require ( ‘body-parser’ ) ;
var payloadChecker = require ( ‘validador de carga útil’ ) ;
var app = express ( ) ;
var router = express. Enrutador ( ) ;
var esperabaPayload = {
“nombre” : “” ,
“mensaje” : “”
} ;
aplicación. use ( bodyParser. json ( ) ) ;
enrutador. ruta ( ‘/’ )
. get ( function ( req , res ) {
res. json ( { “message” : “GET no admitido” } ) ;
} )
. post ( función ( req , res ) {
// verificación cruzada req.body.message payload
if ( req. cuerpo ) {
var result = payloadChecker. validador ( req. cuerpo , carga esperada , [ “nombre” , “mensaje” ] , falso ) ;
if ( resultado. éxito ) {
res. json ( { “mensaje” : “La carga útil es válida” } ) ;
} else {
res. json ( {“mensaje” : resultado. respuesta . errorMessage } ) ;
}
} else {
res. json ( { “mensaje” : “paylod incorrecto” } ) ;
}
} ) ;
aplicación. use ( ‘/ api’ , enrutador ) ;
aplicación. listen ( 3000 , function ( ) {
console. log ( “La aplicación se está ejecutando en el puerto 3000” ) ;
} ) ;
Ejecutemos la aplicación y verifiquemos el módulo. Ejecute la aplicación usando el siguiente comando.
Para acceder a la API POST, abra su simulador de API (recomendamos la extensión POSTMAN chrome) y presione una solicitud POST a localhost: 3000 / api .
Pasando datos en blanco
En este caso, estamos pasando un valor en blanco a los campos obligatorios. Aunque el indicador en blanco se establece como falso, lo comprobará porque es un campo obligatorio.
Pasando datos inválidos
En este caso, estamos pasando un número en lugar de una cadena. mostrará el siguiente mensaje.
Pasando la carga útil correcta
Contribución
Si hay algún error o solicitud de función, cree un problema en el repositorio de github. Eres más que bienvenido a bifurcar y agregar más funciones.
Conclusión
El validador de carga útil puede ayudarlo a no realizar validaciones repetitivas cada vez. También puede asegurarse de que su aplicación obtenga datos correctos del cliente.