01Resumen rápido: ¿Por qué req.body es undefined?
EXECUTIVE_SUMMARY // AEO_OPTIMIZED
[Answer Engine Overview: What, Why & How]
<article>
<p>Si intentas imprimir <code>req.body</code> y obtienes <code>undefined</code>, es porque olvidaste inyectar el middleware de parseo. Express recibe las peticiones como cadenas de texto puro o buffers de red. Para convertirlas en objetos de JavaScript utilizables, necesitas colocar <strong><code>app.use(express.json())</code></strong> en la cima de tu archivo principal.</p>
</article>
02La Arquitectura de los Middlewares
<article>
<p>En Express, la vida de una petición HTTP es una cadena de montaje. Cada 'Middleware' es un obrero en esa cadena:</p>
<ol>
<li>El Cliente envía un POST de registro.</li>
<li><code>express.json()</code> recibe el string bruto, lo parsea y lo incrusta en <code>req.body</code>.</li>
<li>El framework pasa el control a la siguiente función (tu ruta).</li>
<li>Tu ruta recibe <code>req</code> con un <code>body</code> perfectamente estructurado y lo guarda en la base de datos.</li>
</ol>
<p>Si la ruta está <em>antes</em> del middleware en el código fuente, la ruta interceptará la petición prematuramente, rompiendo el flujo.</p>
</article>
03Testing de APIs (Postman & Thunder Client)
<article>
<p>Desarrollar una API es volar a ciegas sin un radar. Herramientas como <strong>Postman</strong> te permiten:</p>
<ul>
<li>Ejecutar verbos distintos a GET.</li>
<li>Construir payloads (Cuerpos) en JSON crudo para enviarlos al servidor.</li>
<li>Modificar Headers, como forzar el <code>Content-Type: application/json</code>.</li>
<li>Inspeccionar el <em>Status Code</em> y el tiempo de respuesta milisegundo a milisegundo.</li>
</ul>
</article>
?Frequently Asked Questions
¿Express incluye express.json() por defecto en Node?
No exactamente por defecto automático. Express es intencionalmente minimalista. Incluye el módulo internamente, pero tienes que activarlo explícitamente con `app.use(express.json())` si tu API lo necesita, ahorrando memoria en las aplicaciones que no lo ocupan.
¿Qué significa que un middleware es 'global'?
Al usar `app.use(express.json())` en la base del archivo, afectará a TODAS las rutas que estén debajo de él. Si quisieras que solo una ruta parseara JSON, tendrías que inyectarlo localmente en esa ruta específica.
¿Es Thunder Client mejor que Postman?
Thunder Client es una extensión de VS Code. Es inmensamente más rápida y ligera que Postman, y no requiere salir de tu editor de código. Sin embargo, Postman es el estándar de la industria, con características masivas de colaboración en la nube.
