express 와 nodemon 를 npm i 로 설치하고 아래와 같이 실행하면 익스프레스 서버가 실행된다.
// app.js
const express = require('express');
const app = express();
app.set('port', process.env.PORT || 3000);
app.get('/', (req, res)=>{
res.send('hello express!');
});
app.listen(app.get('port'), ()=> {
console.log('익스프레스 서버 실행');
});
// nodemon 으로 실행하면 파일에 변화가 있을 때마다 재기동을 해준다.
D:\code\node\6.1>nodemon app
[nodemon] 3.1.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node app.js`
익스프레스 서버 실행
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
익스프레스 서버 실행
// package.json 에서 scripts에 아래와 같이 되어 있으면 npm start 로도 실행이 가능하다.
"scripts": {
"start": "nodemon app"
},
//실행 결과
D:\code\node\6.1>npm start
> express_test@1.0.0 start
> nodemon app
[nodemon] 3.1.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node app.js`
익스프레스 서버 실행
express 에서 html 파일 불러오기
//app.js
const express = require('express');
const path = require('path');
const app = express();
app.set('port', process.env.PORT || 3000);
app.get('/', (req, res)=>{
res.sendFile(path.join(__dirname,'index.html'));
});
app.listen(app.get('port'), ()=> {
console.log('익스프레스 서버 실행');
});
nodemon은 html 파일을 감시하지 않는다.
와일드카드는 보통 다른 라우터들보다 아래에 위치해야 정상적으로 작동된다.
미들웨어는 next()를 해주어야 그 다음 미들웨어가 실행된다.
미들웨어는 여러 개를 같이 사용도 가능하다.
에러 미들웨어는 반드시 next까지 4개가 다 들어있어야 한다.
서버가 클라이언트에게 status code를 마음대로 보낼 수가 있다.(에러가 발생해도)
res.json 은 응답을 보낼 뿐이지 return을 하는 것이 아니다.
// morgan cookie-parser express-session 설치
D:\code\node\6.1>npm i morgan cookie-parser express-session
added 11 packages, and audited 105 packages in 1s
16 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
morgan을 설치하고 실행한 후에 접속하면 비슷한 것 같지만 한 줄이 추가된다.
클라이언트에서 어떤 요청이 왔는지 서버에 기록된다.
얼마나 속도가 걸렸는지, 용량은 얼만큼인지(아래는 173 byte) , status code 도 같이 기록된다.
// 클라이언트에서 어떤 요청 왔는지 기록됨.
D:\code\node\6.1>npm start
> express_test@1.0.0 start
> nodemon app
[nodemon] 3.1.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node app.js`
익스프레스 서버 실행
모든 요청에 실행하고 싶어요.
GET / 200 10.919 ms - 173
모든 요청에 실행하고 싶어요.
GET /favicon.ico 404 1.772 ms - 14
// 개발시에는 dev
app.use(morgan('dev'));
// 실무에서는 combined 사용, 조금 더 자세해진다. ip , 시간, 요청 , 브라우저 등등 알 수 있다.
app.use(morgan('combined'));
app.use(cookieParser('zerochopassword'));
app.get('/', (req, res)=>{
req.cookies // {mycookie : 'test}
req.signedCookies; // 서명된 쿠키
// 쿠키 생성 (name deprecated)
res.cookie('name', encodeURIComponent(name), {
expires: new Date(),
httpOnly : true,
path : '/',
})
// 쿠키 삭제 (name deprecated)
res.clearCookie('name', encodeURIComponent(name),{
httpOnly: true,
path : '/',
})
});
// bodyparser 가 express 안에 있다.
app.use(express.json()); // 클라이언트에서 json 데이터를 보냈을 때 파싱
app.use(express.urlencoded({extended: true})); //클라이언트에서 폼 데이터 보냈을 때 파싱
//extend가 true 면 qs, false 면 querystring (qs를 추천)
// 정적파일 처리
// app.use('요청경로',express.static('실제 경로'));
app.use('/',express.static(__dirname, 'public-3030')); // public은 유명하니깐 다른 것을 붙이는 것이 보안에 좋다.
//localhost:3000/zerocho.html d:\code\node\6.1\public-3030\zerocho.html
//localhost:3000/hello.css d:\code\node\6.1\public-3030\hello.css
'Javascript > Node' 카테고리의 다른 글
노드 교과서 섹션 3 (0) | 2023.09.01 |
---|---|
노드 교과서 섹션 4 (0) | 2023.08.31 |
노드 교과서 섹션 6 (0) | 2023.08.27 |
노드 교과서 섹션 8 (0) | 2023.08.23 |
노드 교과서 섹션 9 (0) | 2023.08.22 |