Domina el dominio Server and Services del J-- NSD con un enfoque práctico en Node y Fastify. Aquí aprenderás a levantar un servidor, crear un endpoint /users y manejar códigos HTTP críticos, siguiendo solo la documentación oficial del framework y aprovechando el ecosistema de plugins compatibles con NPM.
¿Qué evalúa server and services y por qué pesa 70 %?
Este dominio concentra la mayor parte de los ejercicios y requiere escribir bastante código. Se enfoca en construir aplicativos web con Node, como API Rest, dominando a fondo un framework web y su ecosistema.
70 % de la prueba: principal fuente de puntaje.
Cuatro ejercicios: task 2.1, 2.2, 2.3 y 2.4.
Aplicativos con Node: API Rest y otros tipos de servicios.
Mucho código: resolución de problemas más complejos.
Documentación oficial del framework: única referencia permitida.
Ecosistema de plugins y módulos de NPM: puede ahorrar tiempo clave.
Probar cada instrucción: verificar paso a paso y ajustar.
Ítems críticos: omitir configuraciones como el puerto puede dar calificación cero.
¿Cómo construir el servidor en Node con Fastify y configurar el puerto?
La prioridad es que el servicio escuche en el puerto definido por la variable de entorno PORT. Si no llega, usar un respaldo (3000). Activar logger ayuda a depurar.
// server.jsconst fastify =require('fastify')({logger:true});const port = process.env.PORT||3000;fastify.listen({ port }).then(()=> fastify.log.info(`Server listening on ${port}`)).catch((err)=>{ fastify.log.error(err); process.exit(1);});
Variable de entorno PORT: lectura prioritaria, respaldo en 3000.
Logger activo: facilita ver errores y estados.
404 automático: si la ruta no existe, Fastify responde 404 sin código extra.
npm start obligatorio: configurar en package.json para inicializar el servicio. Si no, la nota puede ser cero.
Prueba de puerto: con PORT=4000 debe escuchar en 4000; sin PORT, en 3000.
¿Cómo asegurar npm start y el puerto correcto?
Define el script de arranque en package.json para iniciar el servicio.
Verifica que el servidor lee PORT antes de iniciar.
Ejecuta y valida en localhost que responde según el puerto.
¿Cómo implementar el endpoint /users con validaciones y códigos http?
Se requiere un endpoint GET /users que reciba el parámetro de query username y maneje escenarios con códigos precisos. Fastify simplifica el 404 para rutas inexistentes; el resto se implementa en la ruta.
// Supone una función existente searchUser(username)fastify.get('/users',async(request, reply)=>{const{ username }= request.query||{};// 400: falta usernameif(!username){return reply.code(400).send();}// 406: parámetros extra en la URLif(Object.keys(request.query).length>1){return reply.code(406).send();}// Búsqueda del usuarioconst user =awaitsearchUser(username);// 500: searchUser retornó nullif(user ==null){return reply.code(500).send({error:'user error'});}// 200: respuesta exitosa con el JSON solicitadoreturn reply.send({ username,result: user
});});
400: si falta username en la query.
406: si llegan parámetros extra además de username.
500: si la función searchUser retorna null.
200: si todo va bien, devolver { username, result } como JSON.
Fastify envía 200 por defecto con reply.send(...) cuando no se indica otro código.
¿Qué errores comunes debes evitar?
Confiar ciegamente en asistentes como Copilot: puede sugerir variables equivocadas. Verifica que la búsqueda use la variable correcta, por ejemplo, searchUser(username).
Olvidar reiniciar el servicio tras cambios: reinicia y vuelve a probar.
No probar casos: valida 404 de rutas inexistentes, 400 sin username, 406 con query extra, 500 cuando no existe el usuario y 200 para un usuario válido.
¿Tienes dudas o quieres compartir tu enfoque con Fastify u otro framework de Node? Comenta tu estrategia y casos de prueba clave.