[엘리스] TIL #17

nerry·2022년 5월 14일
0
post-thumbnail

Middleware

  • Express.js 동작의 핵심
  • http 요청과 응답 사이 단계별 동작을 수행해줌
  • 요청이 들어온 순간 부터 요청과 응답을 처리하고, 또 다음 미들웨어를 실행할 수 있다.
  • Route Handler도 미들웨어의 한 종류
    • 라우팅 함수에 적용된 미들웨어로, path parameter을 사용할 수 있다.
const logger = (req,res,next) =>{}

req,res,next를 인자로 갖는 함수를 작성하면 미들웨어가 된다.

next를 호출하지 않으면 미들웨어 사이클이 멈춘다.

종류

  1. 어플리케이션 미들웨어

    app의 use 나 http method 함수를 이용하여 미들웨어를 연결할 수 있다.

    http 요청이 들어온 순간부터 적용된 순서대로 동작한다.

  2. 라우터 미들웨어

    router 객체에 미들웨어가 적용되는 것

    특정 경로의 라우팅에만 미들웨어를 적용함

    app 객체에 라우터가 적용된 순서대로 동작한다. (app이 먼저임)

  3. 미들웨어 서브 스택

    use, http method 함수에 여러 미들웨어를 동시에 적용할 수 있다.

    한 개의 경로에 특정해 미들웨어를 적용하기 위함

    인자의 순서대로 동작함

  4. 오류 처리 미들웨어

    마지막 위치에 만들어져 오류를 핸들링한다.

    err,req,res,next 네가지 인자를 가지고, 앞선 미들웨어에서 next 함수에 인자가 전달되면 실행된다.

  5. 함수형 미들웨어

    하나의 미들웨어를 작성하고, 작동 모드를 선택해 사용하고 싶을 경우 함수형으로 작성한다.

    미들웨어 함수를 반환하는 형식으로 함수 실행시 미들웨어 동작이 결정됨.

    동일한 로직에 설정값만 다르게 해 미들웨어를 사용하고 싶을 경우에 활용되낟.

    const auth = (type) =>(req,res)=>{}

미들웨어 라이브러리

다양한 것이 이미 만들어져 라이브러리로 제공된다.

npm으로 설치 가능하다. ex) cors, multer, passport

REST API

REST 아키텍쳐를 준수하는 웹 API

Restful API

  • API Application Programming Interface 서비스 간 미리 정해진 기능을 실행할 수 있도록 하는 규약
  • Rest REpresentational State Transfer 자료 전송하기 위한 표현 방법 많은 제한 조건이 있지만 REST 가이드를 따르면 좋은 구조로 구성할 수 있다.

#️⃣  사용법

기본 동작 : HTTP Method 사용 + 명사형 URL

URL 표현법 : 자원은 복수형, 하나의 자원에 대한 접근은 아이디 ⇒ /posts/1

계층적 자원 : 자원을 계층적으로 표현 ⇒ /users/1/posts

JSON

JavaScript Object Notation

  • JS에서 객체를 표현하는 표현식
  • 데이터를 표현하는 방법이 단순하고 이해하기 쉬움
  • 데이터 전송 표현식으로 주로 사용함 ⇒ 웹은 주로 문자열로 전송되는데 적은 표현식으로 데이터를 효과적으로 표현할 수 있어 사용한다.

#️⃣  사용법

  • Object : {key:value} 로 표현한다. value는 어떤 값이라도 사용할 수 있다.
  • Array : 어떤 값이라도 사용될 수 있다.

MVC 패턴

웹 서비스의 가장 대표적인 프로젝트 구성 패턴

기능들을 어떻게 분리할지에 대한 하나의 구성 방법

Model - View - Controller로 구분하여 구조를 구성한다.

구성 요소

  1. Model → models

    데이터에 접근하는 기능, 데이터 그 자체

    데이터의 읽기, 쓰기는 Model을 통해서만 가능하다.

  2. View

    데이터를 표현하는 기능

    Controller에 의해 데이터를 전달받고, 들어온 데이터를 화면에 표시하는 기능을 담당한다.

  3. Controller → routes

    Model을 통해 데이터에 접근하여 처리 결과를 View로 전달하는 기능

    라우팅 함수가 해당 기능을 수행한다.

→ 모듈화로 MVC 패턴을 구현할 수 있다.

⭐️ express.js는 JSON 데이터를 처리하지 못한다. 그래서 JSON을 처리하려면 app.use(express.json())이 필요하다

profile
터벅터벅 개발(은좋은)자 로그

0개의 댓글

관련 채용 정보