Back/Node.js

Node.js - express(익스프레스), middleware(미들웨어), next

Node.js - express(익스프레스), middleware(미들웨어), next

// 노드는 js기 때문에 똑같이 위에서 아래로 실행되는 구조

const express = require('express');
const { RequestHeaderFieldsTooLarge } = require('http-errors');

// 경로처리 할 때는 path가 쓰임
const path = require('path');
const app = express();

// 서버에다가 변수를 심는다고 생각
// port라는 속성을 3000으로 넣는 것
// 전역변수같은 느낌
app.set('port', process.env.PORT || 3000);

// 미들웨어임
// 모든 서버에 다 작용함
// next라는 매개변수는 실행되고 나서, 다음을 찾아가게 됨
// 미들웨어들은 next를 해줘야만 다음걸로 넘어 감.
app.use((req, res, next) => {
    // 이 부분이 미들웨어고 이 미들웨어가 use에 들어간 것
    // app.use('/about', (req, res, next) => 이렇게하면 /about에만 적용
    console.log('모든 요청에 실행하고 싶어요!')
    next();
})
// 여기도 try catch 사용해서 catch(error) { next(error) }
// 이렇게 해주면 next는 모든 라우터가지않고 인자값인 error로만 간다.
// 그래서 마지막 error가 에러처리 미들웨어임

app.get('/', (req, res) => {
    // 알아서 파일 보냄
    //__dirname은 현재폴더
    res.sendFile(path.join(__dirname, './index.html'));
    // 한 라우터에선 send를 2번 이상 할 수 없음.
    // sendFile, send, json 등등 이렇게 한 라우터 안에서
    // 여러번 하면 에러가 뜬다.
    // 원래 요청 한번에 응답 한번이다.
});

// 아예 앱에다가 methord를 붙여주는 방식으로 구분이 가능함
// http로 하려면 if elif 등 으로 해야함
app.get('/', (req, res) => {
    res.send('hello express!');
})

app.get('/:hello', (req, res) => {
    res.send('hello express');
})

app.get('/about', (req, res) => {
    res.send('hello express');
});

// 와일드카드라고 함.
// category 별로 java,node 등등 수백개가 있을때 계속 app.get을 할 순없으니
// 이렇게 처리 할 수 있음.
// 위에서 아래로 흐르기 때문에 와일드카드나 범위가 넓은 애들은 아래에 배치하는게 좋음
app.get('/category/:name', (req, res) => {
    // name에 java가 들어가면 밑에도 java로 바뀜
    // node가 들어가면 node로 바뀜
    res.send(`hello ${req.params.name}`);
})

// 에러 미들웨어는 반드시 4개를 다 써야함
// 보안상 이렇게 함
app.use((err, req, res, next) => {
    console.error(err);
    res.send('에러 났지롱, 근데 안 알려주지롱!')
})

app.listen(app.get('port'), () => {
    console.log('익스프레스 서버 실행');
});

 

express가 압도적으로 다운로드수가 많다. 다운로드가 많다는건 안전하다는 것.

 

 

npm I g nodemon

노드몬 하면 프로젝트 파일이 바뀌는지 안바뀌는지 검사하고

알아서 재시작해줌

 

npm start / nodemon app

실행 (메인이 app.js일 때)

 

npm ls

npm ls nodemon

npm ls ~~~

npm ls 하면 지금 그 모듈이 쓰이는지 안쓰이는지 알 수 있음

(empty) 나오면 안 쓰이고 있는 것

 

순서

1. app 먼저 만들고 ex) const app = .....

 

2. app에 관련된 설정들 app.set으로 해주고

 

3. 공통 미들웨어들 넣어주고

 

4. 라우터들 쭉 넣어주고

- 와일드 카드같이 범위가 넓은 애들은 뒤로 보낸다.

 

5. 마지막으로 에러 미들웨어를 넣어줌

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

노드js 유저 인증하기  (0) 2021.04.01
Node.js morgan, cookieParser, static  (0) 2021.03.24
노드 내장 객체 및 모듈 (계속 추가 예정)  (0) 2021.03.24
노드 http연결 개념  (0) 2021.03.24
Node.js 개념 및 특성  (0) 2021.03.24