Server & Node

Sasha Park·2021년 4월 30일
0

Achievement Goals
HTTP (공통)
HTTP 요청/응답을 브라우저를 통해 확인할 수 있고, 해당 내용을 읽을 수 있다.
HTTP 다양한 요청 방식과, 응답 코드에 대해 이해할 수 있다.
node.js modules의 사용
node.js의 내장 http 모듈을 사용할 수 있다. (mini node server)
node.js의 내장 fs 모듈을 사용할 수 있다. (optional) (chatterbox server)
http 모듈 사용시에 서버에 CORS 설정을 할 수 있다. (mini node server)
CommonJS를 이용한 모듈 내보내기/불러오기를 할 수 있다. (chatterbox server)
라우팅과 API
라우팅(조건에 따른 분기)을 이해하고, 이를 서버 코드에서 구현할 수 있다. (mini node server)
클라이언트가 사용할 수 있도록, 서버 API 문서를 직접 작성할 수 있다. (chatterbox server)
Express 라이브러리 맛보기 (refactor express)
express 라이브러리가 어떤 작업을 단순하게 만드는지 이해할 수 있다.
미들웨어의 개념을 이해할 수 있다.
서버 개발과 디버깅 (chatterbox server)
서버 개발을 돕는 다양한 툴들을 익힐 수 있다.
nodemon의 사용
inspect 옵션을 이용한 디버깅

Node.js

V8 엔진으로 빌드된 JS runtime.

Event: 유저의 버튼 클릭이나 네트워크에 리소스를 요청하는 등

  • blocking & Non-blocking: 동기처리 비동기처리

  • I/O model: Input을 주면 Output 반환 모델

  • Node core modules: node와 함께 번들링 되어있는 module.

  • npm init으로 package.json 생성하고 프로젝트를 시작하자.

  • dependency를 설치하는 경우 --save
    dev-dependency를 설치하는 경우, 추가로 -dev 옵션을 주자.
    default로 설치할 경우, -g(global)로 설치하자.

npm install @babel/core --save-dev / -g 

HTTP

서버와 클라이언트가 주로 HTML 등의 문서를 주고받는 데 사용하는 protocol. 주로 TCP/UDP 80번 포트를 사용함.

URI = HTTP 요청은 URI를 통해 할 수 있으며, 주소창을 통해 하는 요청은 전부 get request임.

Server 작성

  1. http 모듈 로드
    http 구동에 필요한 모듈을 가져오자.
const http = require('http');
  1. Server 생성
    http object의 'createServer' method를 호출하여 server를 만든다. 클라이언트와의 통신을 통해 들어온 client의 request 객체와 response 객체를 인자로 받는다.
let server = http.createServer(function(request, response){ // 요청, 응답, 에러 등을 처리.
}).listen()
  1. 요청처리 함수 설정
    클라이언트로부터 request를 받고 나서 어떻게 response로 처리할지 설정해주는 함수. 2번 server 작성 시 내부함수로 설정해줬다.
  • request: 첫번째 인수로 전달되며,http.IncomingMessage라는 객체에서 클라이언트의 요청에 대한 기능을 정리하고 있다.

  • response: 두번째 인수이며, http.serverResponse 라는 개체에 서버에서 클라이언트로 리턴되는 응답에 대한 기능을 정리하고 있다.

  1. request 처리 설정
    'on'은 http의 지정된 이벤트 처리를 통합하는 method로, 첫번째 인자에는 이벤트 이름, 두번째 인수에 함수를 지정.
request.on('이벤트명', () => {
})
  1. Header 정보 내보내기
    'writeHead' method는 response에 header 정보를 설정하며 첫번째 인자는 상태 코드를 지정하고, 두번째 인수에 header 정보를 넣는다.
const defaultCorsHeader = {
'Access-Control-Allow-Origin': '*',
Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Accept',
'Access-Control-Max-Age': 10
}; // CORS 가능하다는 설정을 변수에 지정하여 하기 method에 삽입. 

response.writeHead(200, defaultCorsHeader);
  1. Response 내보내기
    'write'는 body 부분을 작성 및 내보내는 method임. 인수에 지정된 값이 body로 작성됨. 여러번 호출 가능함.
res.write('Hello World\n');
  1. Response 출력완료.
    내용 내보내기가 완료되면 response의 'end' method를 호출하여, 출력을 완료. 인자로 내보낼 내용을 지정할 수 있으며, 본 메서드를 통해 응답 처리는 종료되고, 요청 처리 완료.
response.end(JSON.stringify(body.toLowerCase()));
  1. 대기 시작
    2번의 server 개체가 준비되면, 'listen' method를 실행하여 대기 상태로 만들어 주자. 클라이언트에서 request가 있으면 그것을 받아 처리 가능하다. 첫번째 인자로는 port 번호, 두번째 인수는 호스트 이름, 세번째 인수에 백로그 지정, 네번째 인수에 callback 함수 제공 가능. 보통 첫번째만 지정해줘도 충분.
server.listen(5000) 

혹은 

server.listen(PORT, ip, () => {
console.log(SashaInSPb);
});

araikuma님 블로그 참조

profile
'어?' 에서 '아!'가 되는 순간을 즐기는 개발자입니다.

0개의 댓글

관련 채용 정보