본 자료는 Elice 플랫폼의 자료를 사용하여 정리하였습니다.

Express.js의 Middleware

Middleware란?

  • Express.js 동작의 핵심
  • HTTP 요청과 응답 사이에서 단계별 동작을 수행해주는 함수

Middleware 동작원리

  • HTTP 요청이 들어온 순간부터 시작
  • 미들웨어는 HTTP 요청과 응답개체를 처리하거나, 다음 미들웨어를 실행
  • HTTP 응답이 마무리될 때까지 미들웨어 동작 사이클이 실행

Middleware의 작성과 사용

작성법

  • req, res, next를 가진 함수를 작성하면 해당 함수는 미들웨어로 동작할 수 있다.

    • req - HTTP 요청을 처리하는 객체
    • res - HTTP 응답을 처리하는 객체
    • next - 다음 미들웨어를 실행하는 함수
  • 작성

  const logger = (req, res, next) => {
    console.log(`Request ${req.path}`);
    next();   // next() 함수가 없으면 미들웨어 사이클이 멈추기 때문에 주의!!!!
  }

Route Handler와 middleware

  • Route Handler도 미들웨어의 한 종류
  • Route Handler는 라우팅 함수(get, post, put, delete 등)에 적용된 미들웨어
  • path parameter 사용 가능

사용법

  • 적용되는 위치에 따라 어플리케이션 미들웨어, 라우터 미들웨어, 오류처리 미들웨어로 분류가능
  • 어플리케이션 미들웨어
    • use나 http method함수로 연결
    • 순차적으로 적용
    app.use(함수명)
    app.get('/', (req, res, next) => {
      res.send('test');
    });
  • 라우터 미들웨어
    • router 객체에 미들웨어가 적용되는 것 외에는 어플리케이션 미들웨어와 동일
    • 특정 경로의 라우팅에만 적용하기 위한 방법
    router.use(함수명)
    router.get('/', (req, res, next) => {
      res.send('test');
    });
    app.use('/admin', router);
  • 미들웨어 서브스택
    • use나 http method 함수에 여러개의 미들웨어로 동시에 적용가능
    app.use(함수명1, 함수명2)
    app.use('/admin', auth, router);
    app.get('/', logger, (req, res, next) => {
      res.send('test');
    });
  • 오류처리 미들웨어
    • 일반적으로 마지막에 위치하는 미들웨어
    • err, req, res, next 네가지 인자를 가진다.
    • 앞선 미들웨어에서 next함수에 인자가 전달되면 실행된다.
  • 함수형 미들웨어
const auth = (memberType) => {
  return (req, res, next) => {
    if (!checkMember(req, memberType)) {
      next(new Error(`member not ${memberType}`));
      return;
    }
    next();
  }
}

app.use('/admin', auth('admin'), adminRouter);
app.use('/users', auth('memver'), userRouter);

REST API

REST API란?

  • REST + API
  • REST 아키텍처를 준수하는 웹 API
  • Restful API라고도 한다.

API란?

  • Application Programming Interface
  • 서비스나 프로그램간에 미리 정해진 기능을 실행할 수 있도록 하는 규약

REST란?

  • REpresentational State Transfer
  • 웹에서 자료를 전송하기 위한 표현방법에 대한 아키텍처

JSON

JSON이란?

  • JavaScript Object Notation
  • 객체를 표현하는 표현식

Object

  • {"key": "value"}로 표현한다.

Array

  • [item1, item2]로 표현한다.

Express.js로 REST API 구현하기

MVC 패턴

  • MVC 패턴은 웹 서비스의 가장 대표적인 프로젝트 구성 패턴
  • 프로젝트의 기능들을 어떻게 분리할지에 대한 하나의 구성방법
  • Model - View - Controller를 구붖ㄴ하여 프로젝트 구조를 구성하는 것

Model

  • Model은 데이터에 접근하는 기능 또는 데이터 그 자체를 의미한다.
  • 데이터의 읽기, 쓰기는 Model을 통해서만 이루어지도록 구성해야 한다.

View

  • View는 데이터를 표현하는 기능을 의미한다.
  • 주로 Controller에 의해 데이터를 전달받고 전달받은 데이터를 화면에 표시한다

Controller

  • Controller는 Model을 통해 데이터에 접근하여 처리결과를 View로 전달해준다.
  • 웹 서비스에선 주로 라우팅 함수가 해당 기능을 수행한다.

Postman 사용하기

Postman이란?

  • API를 테스트할 수 있는 도구
profile
열심히

0개의 댓글

Powered by GraphCDN, the GraphQL CDN