Estoy escribiendo un servidor node.js mínimo para entender cómo funciona. Por lo que puedo decir de esta línea:
res.writeHead(200);
no hace nada. Si lo elimino, obtengo exactamente el mismo comportamiento del navegador. ¿Tiene algún propósito? ¿Está bien quitarlo?
// https://nodejs.dev/learn/the-nodejs-http-module const http = require('http'); const server = http.createServer(handler); server.listen(3000, () => { console.log('node: http server: listening on port: ' + 3000); }); function handler(request, response) { res.writeHead(200); res.end('hello world\n'); }
¿Está relacionado de alguna manera con los encabezados http?
El estado de http predeterminado es 200, por lo que no tiene que decirle al objeto de respuesta que el estado es 200. Si no lo establece, la respuesta será automáticamente 200. Puede eliminar res.writeHead(200);
y de manera similar, no necesita la versión expresa de lo que sería res.status(200)
.
La otra cosa que res.writeHeader(200)
es hacer que los encabezados se escriban en el flujo de respuesta en ese punto. Tampoco necesita llamarlo usted mismo porque cuando res.send(...)
, los encabezados se enviarán automáticamente primero (si aún no se han enviado). De hecho, la propiedad res.headersSent
realiza un seguimiento de si los encabezados ya se han enviado. Si no, se envían tan pronto como llame a cualquier método que comience a enviar el cuerpo (como res.send()
o res.write()
, etc...).
¿Está bien quitarlo?
Sí, en este contexto está bien eliminarlo.