Creé una aplicación de servidor donde puede servir páginas dinámicas según la ruta. Simplemente, esto comprueba si el número de ruta proporcionado es un número primo o no... Por ejemplo, localhost:3000/isprime/7 -------> El parámetro de entrada 7 es un número primo localhost:3000/isprime/36 -------> El parámetro de entrada 36 no es un número primo
El problema es, ¿cómo puedo crear un controlador de errores para mostrar un mensaje de error si se ingresan letras en la dirección en lugar de dígitos? Por ejemplo, localhost:3000/isprime/four
Tengo un conocimiento muy limitado del manejo de errores en el expreso. Cualquier ayuda sería muy apreciada.
Aquí está mi código hasta ahora,
app.get('/isprime/:inputNumber(\\d+)', function(request, response) { let num =parseInt(request.params.inputNumber); function isPrime(num) { for(var i = 2; i < num; i++) if(num % i === 0) return false; return num > 1; } if(isPrime(num)) { var p = '<span style="color:blue;">IS a prime number.</span>'; } else { var p = '<span style="color:red;">IS NOT a prime number.</span>'; } let html = ''; html += '<h1>Prime Number Check</h1>'; html += '<p>The input parameter <b> ' + num +'</b>....'+ p+ '</p>'; response.send(html); });Intente usar isNaN(), isNaN() da un valor booleano si el número es válido; de lo contrario, devuelve falso,
Aquí hay un ejemplo para su código
app.get('/isprime/:inputNumber(\\d+)', function(request, response) { let num = parseInt(request.params.inputNumber); if(isNaN(num)) { response.send("<h1>Invalid number</h1>"); return; } function isPrime(num) { for (var i = 2; i < num; i++) if (num % i === 0) return false; return num > 1; } if (isPrime(num)) { var p = '<span style="color:blue;">IS a prime number.</span>'; } else { var p = '<span style="color:red;">IS NOT a prime number.</span>'; } let html = ''; html += '<h1>Prime Number Check</h1>'; html += '<p>The input parameter <b> ' + num + '</b>....' + p + '</p>'; response.send(html); });El (\\d+) que está poniendo al final de la definición de su ruta hace que solo los parámetros con 1 o más dígitos coincidan con la ruta.
Si elimina eso, y luego isNaN() para probar si el valor del parámetro se analiza como un número entero, podrá seleccionar las solicitudes que desea y enviar una respuesta a las solicitudes con valores de parámetro que son solo letras.