res 객체에는 res.writeHead와 res.write, res.end 메서드가 있습니다. res.writeHead는 응답에 대한 정보를 기록하는 메서드입니다. 첫 번째 인수로 성공적인 요청임을 의미하는 200을, 두 번째 인수로 응답에 대한 정보를 보내는데, 콘텐츠의 형식이 HTML임을 알리고 있습니다. 또한, 한글 표시를 위해 charset을 utf-8로 지정했습니다. 이 정보가 기록되는 부분을 헤더(header)라고 합니다.
res.write 메서드의 첫 번째 인수는 클라이언트로 보낼 데이터입니다. 지금은 HTML 모양의 문자열을 보냈지만 버퍼를 보낼 수도 있습니다. 또한, 여러 번 호출해서 데이터를 여러 개 보내도 됩니다. 데이터가 기록되는 부분을 본문(body)이라고 합니다. 헤더와 본문은 다음 절에서 자세히 알아보겠습니다.
res.end는 응답을 종료하는 메서드입니다. 만약 인수가 있다면 그 데이터도 클라이언트로 보내고 응답을 종료합니다. 따라서 위의 예제는 res.write에서 <h1>Hello Node!</h1> 문자열을, res.end에서 <p>Hello Server!</p> 문자열을 클라이언트로 보낸 후 응답이 종료된 것입니다. 브라우저는 응답 내용을 받아서 렌더링합니다.
이 상황을 그림으로 표현하면 다음과 같습니다.
▲ 그림 4-4 서버 구조도