Node.js_2. 서버 구축

12685 단어 node.jsnode.js

서버 구축을 위한 5단계

서버 구축을 위한 단계는 다음과 같다.

  • 1단계: 요청 메소드 정리
  • 2단계: 라우터 정리
  • 3단계: 요청 데이터 받기
  • 4단계: 동작 구현
  • 5단계: 데이터 + 상태 리턴

기본 세팅

Node.js에서 서버 구현을 위한 가장 기본적인 모듈은 바로 http로 다음과 같이 require를 통해 불러올 수 있다. 이는 Node.js에서 기본적으로 제공하는 패키지로 따로 npm을 이용해 설치할 필요는 없다.

const http = require('http');

서버 구축을 위한 객체인 createServer를 설정한 후 다음과 같은 콜백함수를 인자로 받는다.

  • request: 응답받은 내용
  • response: 받은 응답에 대한 처리
http.createServer((request, response) => {
  // 서버 구축
}).listen(8080);

마지막의 listen(8080)은 사용하려는 포트 번호로, 80이 기본값이며 프론트 서버는 주로 3000을 사용한다.

1단계: 요청 메소드 정리

createServer의 request는 다시 다음처럼 나누어 볼 수 있다.

const { method, url, header } = request;

이를 이용해 특정 메소드에 실행할 코드를 정리한다.

if (request.method === 'POST') {
  // do something
}

2단계: 라우터 정리

다음으로 특정 주소로 라우팅 되었을 경우를 고려하여 코드를 정리한다.

if (request.method === 'POST') {
  if (request.url === '/profile') {
    // do something
  }
}

3단계: 요청 데이터 받기

이제 request를 통해 데이터를 받는 코드를 작성한다. 아래의 경우 data라는 문자열을 설정한 후 chunk를 data에 추가해주고 있다.

if (request.method === 'POST') {
  if (request.url === '/profile') {
    let data = '';
    request.on('data', function(chunck) { 
      // on: event에 맞춰 콜백함수를 실행하는 메소드 
      // 'data'는 약속된 키워드 
      data = data + chunk; 
      // chunk를 통해서 쪼금씩 연속적으로 body 값을 받아온다 
    )}
  }
}
  • buffer:
  • chunk:

4단계: 동작 구현

이제 request를 통해 받은 data에 특정 동작을 구현하는 코드를 작성한다.

if (request.method === 'POST') {
  if (request.url === '/profile') {
    let data = ''; 
    request.on('data', function(chunck) { 
      data = data + chunk; 
    )}.on('end', function() {
      data.toUpperCase(); // 동작 구현
    )}         
  }
}

5단계: 데이터 + 상태 리턴

마지막으로 response를 이용해 헤더, 바디를 설정하여 리턴한다.

if (request.method === 'POST') {
  if (request.url === '/profile') {
    let data = ''; 
    request.on('data', function(chunck) { 
      data = data + chunk; 
    )}.on('end', function() {
      data.toUpperCase();
      response.writeHead(201, defaultCorsHeader); // 헤더
      response.end(data); // 바디
    )};
          
  } else { // 에러처리
    response.writeHead(404, defaultCorsHeader);
    response.end("Not found 404");
  }
  
}

const defaultCorsHeader = {
  'Access-Control-Allow-Origin': '*', // 허용할 서버
  'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS', // 허용할 메소드
  'Access-Control-Allow-Headers': 'Content-Type, Accept', // 허용할 header 속성
  'Access-Control-Max-Age': 10 // 통신 가능 시간
};

참고
HTTP 트랜잭션 해부
www.zerocho.com - 서버 만들기

좋은 웹페이지 즐겨찾기