Interaction With Server - request, response

Ben Lee·2021년 6월 18일
0

Node.js 서버 구현

아래의 Node.js 공식문서의 데이터 요청/응답 원리를 보며 많은 도움을 얻을 수 있었다.
HTTP트랜잭션

Stream

하드디스크에 자리를 만들어놓고 메모리를 거치지 않고 저장함
buffer 및 concat 등의 작업 대신.

이번 스프린트에서는 node.js를 사용하여 서버를 구현해보았다. 클라이언트의 request 중 데이터 처리에 있어서 동적 기억공간인 Buffer를 사용했다.

let body = [];
    request.on('data', (chunk)=>{ //버퍼에 담긴 chop 데이터
      body.push(chunk);
    }).on('end', ()=>{ //end 부분에서 concat으로 묶음
      body = Buffer.concat(body).toString();
      response.on('error', (err)=>{ //응답 에러
        console.log(err);
      });
      response.writeHead(201, defaultCorsHeader);
      //response.setHeader('Content-Type', 'application.json');
      response.end(body);
    });

다만, Buffer 방식은 데이터 공간활용에 있어서 효과적으로 사용하지 못하기 때문에 가상의 저장공간을 거치지 않고 곧바로 데이터를 저장할 수 있는 개념이 도입되었다.

request.pipe(response);

이를 통해 chop 데이터를 concat하여 Buffer에 담는 과정들이 생략될 수 있다.

nodemon

node 서버를 이용하면서 코드를 변경할 경우, 변경한 코드를 웹 상에서 확인하려면 서버를 재시작해야 변화를 감지할 수 있다.
nodemon은 서버를 수동으로 재시작하지 않고도 소스를 변경할 때 이를 감지하여 자동으로 서버를 재시작한다.

$npm install nodemon --save-dev
//or
$npx nodemon @@.js

추가적으로 다른 프로그램을 사용하였다면, install 시 --save를 붙여야 dependencies 리스트에 추가되어 다른 개발자가 사용시 자동으로 install되어 문제없이 프로그램을 구동할 수 있다.
여기에 -dev를 붙이게되면 development모드의 local에서만 사용함을 의미

profile
개발자가 되고픈 엔지니어

0개의 댓글