Skip to content

Latest commit

 

History

History
198 lines (137 loc) · 8.23 KB

File metadata and controls

198 lines (137 loc) · 8.23 KB

간단한 웹 서버 만들기

  • http 모듈 을 사용하면 웹 서버 기능을 담당하는 서버 객체를 만들 수 있다.
const http = require('http');
const server = http.createServer();
const port = 3000;

server.listen(port, () => {
    console.log('started server by node.js');
});
  • 서버 실행 및 대기에는 listen(), 종료에는 close() 메소드를 호출한다.

웹 서버 요청 이벤트 처리하기

  • 연결(connection) > 요청(request) > 종료(close)
// server가 생성 되었다고 가정 ...
const server = http.createServer();
// ...

server.on('connection', (socket) => {
    // ...
});

server.on('request', (req, res) => {
    // ...
});

server.on('close', () => {
    // ...
});

Error: listen EADDRINUSE ~~~ 오류는 이미 해당 포트를 사용 중 일 때 발생한다.

  • res 객체의 writeHead(), write(), end() 메소드로 응답을 보낼 수 있다. (05.example_01.js)
  • 웹 문서 이외에도 MIME Type 을 설정하면, 이미지나 파일을 브라우저상에 보여줄 수 있다.
  • 파일 응답 시, 스트림을 이용하면 더 간단하게 작성할 수 있다. (05.example_02.js)
  • http 모듈 에 클라이언트 기능도 제공한다. GET과 POST방식 제공. (05.example_03.js)

익스프레스로 웹 서버 만들기

새로운 익스프레스 서버 만들기

  • express는 node.js 웹 애플리케이션 프레임워크이다.
  • 미들웨어라우터 의 조합이다.
  • 외장 모듈 을 이용하여 설치한다.
  • 05.basic_express - app1.js
> npm init
> npm install express --save
  • new express()익스프레스 서버 객체 이다.
  • set()는 웹 서버의 환경을 설정하는 메소드이다. 사용자 정의 속성을 정의할 수 있고, 미리 정해진 속성(port, env, views, view engine)에 의해 설정에 영향을 끼칠 수 도 있다.

미들웨어로 클라이언트에 응답 보내기

  • use()를 이용하여 미들웨어를 설정한다.
  • 노드에서는 미들웨어를 사용하여 필요한 기능을 순차적으로 실행한다.
    • ex)
    • 요청 -> 미들웨어 0 -> 미들웨어 1 -> 미들웨어 2 -> ... -> 미들웨어 n -> 라우터 -> 응답
  • 라우터 는 클라이언트의 요청 패스를 보고 요청 정보를 처리할 수 있는 곳으로 기능을 전달해 주는 역할을 한다.
  • 05.basic_express - app2.js

여러 개의 미들웨어를 등록하여 사용하는 방법 알아보기

  • 여러 개의 미들웨어 사용하고 싶은 경우, next()를 호출하여 다음 미들웨어로 처리 결과를 넘겨주어야 한다.
  • 미들웨어 안에서는 기본적으로 요청을 받는 req 객체와 응답을 하는 res 객체를 파라미터로 전달받아 사용할 수 있다.

익스프레스의 요청 객체와 응답 객체 알아보기

  • 익스프레스에서 사용하는 요청 객체와 응답 객체는 http 모듈에서 시용되는 객체와 동일하다. (But, 몇 가지 메소드가 더 추가되었다.)
메소드 이름 설명
send HTML, Buffer, JSON 객체, JSON 배열
status 상태 코드
sendStatus 상태 코드 + 상태 메시지
redirect 웹 페이지 강제 이동
render 뷰 엔진에 의한 웹 문서

익스프레스에서 요청 객체에 추가한 헤더와 파라미터 알아보기

이름 설명
query GET 방식으로 전송된 요청 파라미터
body POST 방식으로 전송된 요청 파라미터(body-parser 외장 모듈 추가)
header 헤더
  • 기본적인 요청 파라미터에 대한 확인 여부는 여러 줄이 필요하지만, 익스프레스에서는 간단하게 확인 할 수 있다.

미들웨어 사용하기

  • 익스레이스에서 여러 가지 미들웨어를 제공한다.

static 미들웨어

> npm install serve-static --save

body-parser 미들웨어

> npm install body-parser --save

요청 라우팅 하기

  • 요청 url에 대해서 일일이 검증할 필요없이 라우터 미들웨어를 이용한다.

라우터 미들웨어 사용하기

URL 파라미터 사용하기

  • URL 파라미터 : URL 주소의 일부로 들어가는 값
  • : 키워드를 이용합니다. 이것을 토큰 이라고 부른다.
  • 05.basic_express - app9.js

오류 페이지 보여 주기

express-error-handler 미들웨어로 오류 페이지 보내기

> npm install express-error-handler --save

토큰과 함께 요청한 정보 처리하기

쿠키와 세션 관리하기

  • 로그인 여부 판단에 쿠키세션 을 사용한다.

쿠키 처리하기

  • 쿠키는 클라이언트 웹 브라우저에 저장되는 정보로서 일정 기간 동안 저장하고 싶을 때 사용한다.
  • 익스프레스에서는 cookie-parser 미들웨어를 사용한다.
  • 05.basic_express - app12.js
> npm install cookie-parser --save

세션 처리하기

> npm install express-session --save

파일 업로드 기능 만들기

  • 외장 모듈 을 사용하여 파일을 업로드 할 수 있다.
  • 멀티 파트 포멧으로 된 파일 업로드 기능을 사용하여 파일 업로드 상태 등을 확인 가능하다.
  • multer 미들웨어로 파일을 업로드 할 수 있다.
> npm install multer --save
속성 설명
destination 폴더 지정
filename 파일 이름 변경
limits 파일 크기나 갯수 제한 설정
  • multer 미들웨어 사용 시, 미들웨어 순서가 중요하다. ( body-parser -> multer -> route )