서버 구축하기

761 단어·2 분·원문(.md)

1. server 폴더 생성 #

2 server.js 파일 생성 #

  • server .js
// 서버 사용을 위해 http 모듈을 http 변수에 담는다
let http = require('http');

// http 모듈로 서버를 생성한다
// 아래와 같이 작성하면 서버를 생성한 후 , 사용자로 부터 http 요청이 들어오면 function 블럭 내부의 코드를 실행해서 응답한다.
let server = http.createServer(function(request,response){
  response.writeHead(200, {'Content=Type':'text/html'});
  response.end('Hello node.js!');
});

// 3. listen 함수로 8080 포트를 가진 서버를 실행한다.
server.listen(8000, function(){
  console.log('Server is running...');
});

server.js 실행 및 접속 #

터미널 창

$ node server

실행 후 http://localhost:8080 이 서버에 Hello node.js! 라고 잘 나온다면 성공한 것이다.


코드 분석 #

let http = require('http');

웹 서버를 실행하기 위해 http 모듈을 require로 불러온다. (require은 import와 유사한 기능이다.) node.js는 require 후에 해당 모듈을 http라는 변수에 담은 후 하나의 독립적인 객체로 사용합니다.

http 모듈에 정의되어 있는 createServer 함수로 서버를 생성합니다.
일반적인 함수는 이렇게 사용하는데

function nameOfFunction(parameter){
  // 실행 로직
}

createServer() 파라미터로 입력되는 function(request , response){}은 함수명이 없습니다.

함수명이 없이 function이라고만 작성된 파라미터는 이벤트 발생시에 callback이 됩니다. 즉, 생성된 서버로 어떤 요청이 들어오면 function 내부의 로직이 실행되면서 function내부에 선언한 request와 response라는 이름으로 사용할 수 있는 값을 넘겨줍니다. 그래서 function 블럭 {} 내부에 서는 request와 response로 넘어오는 어떤 값을 사용할 수 있습니다.

let server.createServer(function(request,response){
  response.writeHead(200,{'Content-Type':'text/html'});
  response.end('Hello node.js!');
})

아래 코드에서는 response 객체를 사용해 사용자 측으로 반환값을 넘겨주는데, 먼저 writeHead( ) 라는 함수에

첫번째는 200 이라는 숫자값을,

두번째는 { } 중괄호 안에 { '키' : '값' } 형태의 값을 담습니다.

response.writeHead(200,{'Content-Type':'text/html'});

첫번째 200이라는 숫자값은 웹서버에 들어오는 어떤 요청에 대해 정상적으로 값을 리턴할 때 사용하는 http 상태 코드입니다. 오류가 없이 서버에서 정상적으로 처리가 완료되면 200 코드를 담아서 응답헤더를 설정해 주게 됩니다.


두번째 {'Content-Type':'text/html'} 값은 서버측에서 보내주는 컨텐츠의 타입이 텍스트이고, html형태라는 것을 정의합니다

Back-End/Node/server.md