본문 바로가기
Javascript/Node.js

익스프레스JS

by 모스키토끼 2020. 6. 10.

익스프레스JS란?

NodeJS로 만들어진 웹 프레임워크

개념 5가지

  1. 애플리케이션
  2. 미들웨어
    - 익스프레스에 기능을 추가하고 싶을 때 사용
  3. 라우팅
    - url 처리에 사용
  4. 요청 객체
  5. 응답 객체

애플리케이션

  • 익스프레스 인스턴스를 애플리케이션이라고 함
    ex) const express = require('express');
         const app =express();
    -> 익스프레스 객체를 받은 app이라는 변수는 어플리케이션
  • 서버에 필요한 기능인 미들웨어를 애플리케이션에 추가
  • 라우팅 설정 가능
  • 서버를 요청 대기 상태로 만들 수 있음
    ex) app.listen(3000, function(){console.log('Server is running');};

미들웨어

  • 함수들의 연속
  • 로깅 미들웨어
        const express = require('express');
        const app = express();
    
        function logger(req, res, next){
            console.log('I am logger');
            next(); //미들웨어는 마지막에 next함수를 호출해주어야 한다. 다음 로직으로 넘어가기 위해서
        }
    
        function logger2(req, res, next){
            console.log('I am logger2');
            next();
        }
        app.use(logger); //logger라는 미들웨어를 사용하겠다!
        app.use(logger2);
    
        app.listen(3000, function(){
            console.log('Server is running');
        });
  • 서드파트 미들웨어
    ex) 서버 쪽에 로그를 남겨주는 morgan을 사용
        const express = require('express');
        const moran = require('morgan');
        const app = express();
    
        function logger(req, res, next){
            console.log('I am logger');
            next();
        }
    
        function logger2(req, res, next){
            console.log('I am logger2');
            next();
        }
        app.use(logger);
        app.use(logger2);
        app.use(morgan('dev'));
    
        app.listen(3000, function(){
            console.log('Server is running');
        });

    결과

  • 일반 미들웨어
    - 위에서 다룬 미들웨어들이 일반 미들웨어
    - 파라미터를 3개(req, res, next) 받는다.
  • 에러 미들웨어
    - 파라미터 4개(err, req, res, next)
        const express = require('express');
        const app = express();
    
        function commonmw(req, res, next){
            console.log('commonmw');
            next(new Error('error occured'));
        }
    
        function errormw(err, req, res, next){
            console.log(err.message);
            //에러 처리
            next();
        }
    
        app.use(commonmw);
        app.use(errormw);
    
        app.listen(3000, function(){
            console.log('Server is running');
        });

라우팅

  • 요청 url에 대해 적절한 핸들러 함수로 연결해 주는 기능
  • 애플리케이션의 get(), post() 메서드로 구현 가능
  • 라우팅을 위한 전용 Router 클래스 사용 가능

요청 객체 & 응답 객체

  • 클라이언트 요청, 응답 정보를 담은 객체
  • http 모듈의 request, response 객체를 래핑 한 것(좀 더 사용하기 쉽게 하기 위해)
  • req.params(), req.query(), req.body(), res.send(), res.status(), res.json() 메서드를 주로 사용

 

Reference

https://www.inflearn.com/course/%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%A3%BC%EB%8F%84%EA%B0%9C%EB%B0%9C-tdd-nodejs-api/

 

테스트주도개발(TDD)로 만드는 NodeJS API 서버 - 인프런

javascript 언어로 백엔드 개발을 할 수 있는 NodeJS 를 학습해 봅니다. 테스트 주도 개발 (TDD) 방법으로 NodeJS를 이용해 API 서버 개발을 배워보고 학습할 수 있는 강좌입니다. NodeJS의 대표적인 웹프레�

www.inflearn.com

 

'Javascript > Node.js' 카테고리의 다른 글

SuperTest 연습  (0) 2020.06.11
테스트 주도 개발(TDD)  (0) 2020.06.10
NodeJS의 특징  (0) 2020.06.09
Https와 Http2  (0) 2019.11.06
Rest API와 라우팅  (0) 2019.11.06

댓글