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 |