JavaScript/node.js

express 웹 애플리케이션 프레임워크

짱닭 2020. 11. 18. 21:39
반응형

과제 프로젝트에서 작성한 내용 기준으로 작성함

설치

npm install express --save

express 설치는 --save 옵션을 붙여서 해당 프로젝트에만(로컬) 설치 되도록 한다.


기본설정

const express = require('express');
const app = express();
const port = 3000;
app.listen(port, () => {
    // console.log(`Example app listening at http://localhost:${port}`)
})

위 코드가 기본 설정이다.
express객체를 생성해서 사용한다.
listen(port, ()=>{})메서드를 사용해서 localhost의 해당 포트로 오는 요청을 받을 수 있도록 설정한다.
----

미들웨어

const cors = require('cors');
const bodyParser= require('body-parser')
app.use(bodyParser.json());
app.use(cors())

cors 설정과, body-parser 설정을 했다.
body-parser는 최근 express 버전에서 추가되어 npm으로 설치하지 않아도
require()으로 불러오기만 하면 사용가능하다. (cors는 설치해서 사용했다)

body-parser가 있어야 post 요청이 왔을 때 payload 부분 즉, 요청의 body 부분을
편하게 접근할 수 있다.

app.use()메서드는 모든 요청에 미들웨어를 적용한다.
위에서부터 동기적으로 처리되고, 모든 요청에 적용할 미들웨어만
사용하는 것을 추천한다. use()를 많이 쓸수록 모든 요청에 미들웨어가 많이 사용되어
처리에 부담이 될 수 있다.

//에러핸들링
app.use((req, res, next)=>{
    if(req.path !== '/messages' && req.path !== '/'){
        res.status(404).send('Page NOT Found...')
    }else{
        next();
    }
})

미들웨어를 특정 path(엔드포인트, url)에만 적용하도록 한 코드다.
나는 지정한 경로가 아닌 요청을 하면 에러메세지를 보내도록 위처럼 작성해서 썼다.

에러 핸들링을 위해서 위처럼 응답(res.send())를 보내는 미들웨어를 작성했다면,
반드시 next()를 써서 다음 실행순서나 다음 미들웨어로 진행되도록 해야한다.
next()로 실행순서를 넘겨주지 않는다면 실행순서는 해당 미들웨어에서 머물게 되고 진행되지 않는다.


라우팅

app.get('/messages', (req, res) => {
    res.send(JSON.stringify(chats))
})

app.post('/messages', (req, res) => {
    // console.log(req.body)
    chats.results.push(req.body)
    res.send(JSON.stringify(req.body))
})

요청 메서드 별로 express에서 쓰는 메서드가 다르기 때문에 분기하기가 쉽고 편하다.
get 요청은 get(), post 요청은 post()를 사용한다.

body-parser를 require()를 써서 불러왔다면
req.body를 사용해서 post 요청의 body 부분에 접근할 수 있다.

요청은 res.send()를 사용해서 응답을 보내고 종료한다.

응답은 json이나 string 타입으로 변환해서 보낸다.

라우팅은 Router 객체를 사용해서 하는 방법도 있지만 이번엔 사용하지 않았다.

디버깅

package.json 파일에서 서버를 실행하는 명령어에 --inspect-brk 를 추가한다.

"node --inspect-brk server/express.js"

해당 명령어로 express 서버를 실행하면
서버 첫 라인에서부터 브레이크포인트가 생겨서 코드가 진행되지 않는다.

개발자 콘솔을 켜서 새로생긴 node.js 아이콘 모양을 클릭하면 디버거가 나타나고 디버깅을 할 수 있다.

반응형