1. 요청과 응답 이해하기

/server0.js

const http = require('http'); //http 서버가 있어야 웹 브라우저의 요청을 처리할 수 있으므로 http 모듈을 사용

http.createServer((req, res) => {
  // 여기에 어떻게 res 할지를 작성을 한다.
});

/server1.js

const http = require('http');

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  /*
  res.writeHead는 응답에 대한 정보를 기록하는 메서드 : 
  첫 번째 인수로 성공적인 요청임을 의미하는 200을, 
  두 번째 인수로 응답에 대한 정보를 보내는데
  콘텐츠의 형식이 HTML임을 알리고 있다.

  또한 한글 표시를 위해 charset을 utf-8로 지정했다.
  이 정보가 기록되는 부분을 **헤더**(Header)라고 부른다.
	*/
	res.write('<h1>Hello Node!</h1>');
	/*
  res.write 메서드의 첫 번째 인수는 클라이언트로 보낼 데이터.
  지금은 HTML 모양의 문자열을 보냈지만 버퍼를 보낼 수도 있다.
  또한, 여러 번 호출해서 데이터를 여러 개 보내도 된다.
  데이터가 기록되는 부분을 본문(Body)이라고 부른다.
  */
  res.end('<p>Hello Server!</p>');
	/*
  - res.end는 응답을 종료하는 메서드
  만약 인수가 있다면 그 데이터도 클라이언트로 보내고 응답을 종료
  */
})
  .listen(8080, () => { // 서버 연결
/*
createServer 매서드 뒤에 listen메서드를 붙이고
클라이언트에 공개할 포트 번호와 포트 연결 완료 후 실행될 콜백 함수를 넣는다.
이제 이 파일을 실행하면 서버는 8080 포트에서 요청이 오기를 기다린다.
*/
    console.log('8080번 포트에서 서버 대기 중입니다!');
  });