ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Express 개요
    FrameWork/Express.js 2022. 8. 3. 11:34

    Express 사용의 기본

    const express = require('express')
    const app = express()
    
    app.get('/gets',function(req,res,next)){
    	res.send(...)
    }
    
    app.post('/posts',function(req,res,next)){
    	res.send(...)
    }
    
    app.listen(8080)

     

    application에서 'express'를 import한 다음에 express 생성자 함수를 이용해서 app을 만든다.

    app의 get메서드의 '/gets'라는 url에 대해서 등록한 callback함수가 호출되도록 만들 수 있고 get,post,put,delete에 관한 것을 개별적으로 해당하는 callback을 등록할 수 있다.

     

    그리고 listen port를 등록하면 끝이다.

     

    Express chain

    express를 한 문장으로 표현하라면 express는 middleware의 연속이다. 즉 middleware의 chain이다. 수 많은 middleware의 chain으로 연결된 것이 express이다.

    1.app.use()를 사용하면 get,post등등 모든 것을 처리하는 함수이다. 즉 use()를 이용해서 모든 path에 대해서 처리하는 middleware를 하나 만든다.

    2.  또 다른 app.use()를 이용해서 모든 경로에 대해서 headers를 처리하는 middleware를 하나 만든다.

    3. app.get()를 이용해서 특정 경로에 대한 요청을 처리하는 middleware를 만든다.

     

    이렇게 middleware를 서로 연결해 주는 것이 expressd이다.

     

    가상시나리오

    사용자가 get 메서드를 사용해서 root 경로에 request가 접수가 되면 => use에서는 모든 메서드, 경로에 대해 처리를 하기 때문에 첫번째 app.use()메서드에서는 json을 파싱을한다.

     

    그 다음 next() 메서드를 호출해서 다음 middleware로 넘어간다. 다음 middleware도 모든 request 메서드에 대해 처리를 하기 때문에 headers에 대한 적절한 처리를 한다음에

     

    다시 next()를 호출해서 다음 middleware로 넘어간다. 그 다음 get()메서드에서는 요청에 해당하는 resource를  사용자에게 response를 해 줄 수 있다.

     

    이렇게  response에 한번 반응을 하고 나면 더 이상 그 뒤에 있는 다른 middleware에게는 넘어가지 않는다. 한번 response를 보내고 나면, 그 뒤에 있는 middleware는 실행되지 않는다.

     

    요청이 들어왔을 때 app.use -> app.use->를 거쳐 어떤 app.get 이나 app.post 등 에도 해당이 되지 않을 때, 제일 마지막에 등록된 middleware가 호출이 되다. 이때 이 middleware에서 error를 던지거나 사용사에게 response를 할 수 있다.

     

     

    정리

    이 처럼 express란 middleware callback 함수의 연속이다. 그리고 해당하는 callback함수가 요청이 들어온 request와 url이 일치한다면 적절한 처리를 해서 response를 보내면된다.

     

    또 express에서는 express자체에서 제공하는 다양한 middleware들이 있다.

     

    [출처 -https://academy.dream-coding.com/courses/node ]

     

     

     

     

     

    댓글

Designed by Tistory.