본문 바로가기

나혼자공부시간(평일저녁,주말,휴일때)

(java10 질문 물어봐)express 모듈-미들웨어/body parser미들웨어/router/morgan/winston/combine(colorize(),simple()),timestamp()/connect-multiparty/express-session

express 모듈-미들웨어 적용해보기

const express = require('express');
const app = express();

app.use((request,response,next)=>{
console.log("첫번쩨 미들웨어로 요청");
request.user1="HONG";
next();
});

app.use((request,response,next)=>{
console.log("두반쩨 미들웨어에 요청");
request.user2="KIM";
next();
});

app.use((request,response,next)=>{
console.log("세반쩨 미들웨어에 요청");
response.writeHead(200, {'Content-Type':'text/html;charset=utf-8'});
response.write(`<h1><p>${request.user1}</p></h1>`);
response.write(`<h1><p>${request.user2}</p></h1>`);
response.write(`<h1>express 서버에서 응답한 결과</h1>`);
});

app.listen(5501,()=>{
console.log('Server is running http://127.0.0.1:5501');
})

 

 

express 모듈- static 미들웨어

 

 

 

const express = require('express');
const app = express();

app.use(express.static(`${__dirname}/media`));
app.use((request, response)=>{
response.writeHead(200, {'Content-Type':'text/html;charset=utf8'});
response.end('<img src="/candy.jpg" width="14%"/>');
});

app.listen(5503, ()=>{
console.log("서버 작동중입니다. http://127.0.0.1:5503");
});

express모듈 -body parser미들웨어

-데이터를 내가 원하는 형태의 데이터로 '가공'하는 과정을 parsing 이라 하며 그 과정을 수행하는 모듈 혹은 메소드를 parser라 함.

 

 

 

 

router-미들웨어

const express = require('express');
const app = express();

app.get('/one', (request,response)=>{
response.send('<a href="/two">Street 200</a>');
});

app.get('/two', (request,response)=>{
response.send('<a href="/one">Street 100</a>');
});

app.get('/three/:number', (request,response)=>{
const streetNumber=request.params.number;
response.send(`${streetNumber}Street`);
});

app.get('/four/:number', (request,response)=>{
const aveNumber=request.params.number;
response.send(`${aveNumber}ave`);
});
app.listen(5508,()=>{
console.log('Server is running. http://127.0.0.1:5508');
});

 

street200누르면 ->http://127.0.0.1:5508/two로 이동함(로 send함)

street100누르면 ->http://127.0.0.1:5508/one로 이동함(로 send함)

 

 

morgan미들웨어

-npm install morgan --save로 먼저 설치

-로그 기록을 남기는 morgen 모듈을 설치하고 사용해본다

-conbined, common이 일반적인 매개변수

const express = require('express');
const morgan = require('morgan');

const app = express();
app.use(morgan('combined'));
app.use(morgan('common'));
app.use(morgan(':method+data'));
app.use(morgan(':status+url'));
app.use((request, response) =>{
response.send('express morgan');
});

app.listen(5509, ()=>{
console.log('Server is running. http://127.0.0.1:5509');
});
 

로그가 찍힌게 보인다.

로그 찍히게 app/log/access.log파일을 만들어주고 거기에 로그가 저장되게끔 해줄것이다.

로그인버튼을 누르면 이렇게 :method:date[web]에 대한 로그가 잘 찍히는게 나타남

(:method:date[web]는 npm웹사이트에서 복붙해서 들고온것이다.)

 

winston

 

winston의 대한 level

레벨 숫자가 높을수록 하위레벨임.

colorize()색깔 입혀주고 싶으면 combine통해서  묶어주면 됨. simple()하면 저렇게 로그 심플하게 나옴

winston.format.timestamp()하면 시간날짜기록도 로그로 찍을수 있음

포맷으로 원하는 형식의 시간 출력 가능

 

계속 winston나오는게 꼴뵈기 싫으면 이렇게 최적화 정리 해줄수 있다.

계속 format도 꼴뵈기 싫어서 이렇게 최적화 정리

이렇게 파일에도 저장이 되고, 콘솔에도 찍힌게 보인다(개발할때는 이렇게 콘솔 찍어보는게 매우 중요함,값 들어왔는지 안들어왔는지ㅇㅇ)

express 모듈 - cookie-parser 미들웨어

-npm install cookie-parser --save로 먼저 설치

-쿠키 헤더를 파싱하고 req.cookies를 쿠키 이름으로 키가 된 객체로 채웁니다.

 

//chat GPT가 짠거
const express = require('express');
const cookieParser = require('cookie-parser');
const app = express();

app.use(cookieParser()); //cookie-parser를 미들웨어로 등록해줘야함
//이거 등록 추가를 안하면 쿠키를 읽어 올수가 없음.(request 객체에 cookies프로퍼티를 제공해서 쿠키를 읽어올수가 없음)

app.get('/set', (request,response)=>{
    console.log('Set cookie 호출');
    response.cookie('user', {
        id:'gildong123',
        name:'hong',
        authorized:true
    });
    response.redirect('/get');
});

app.get('/get', (request,response)=>{
    console.log('Get cookie 호출');
    response.send(request.cookies);
});

app.listen(5510, ()=>{
    console.log('server is running. http://127.0.0.1:5510');
});
//인강 교육 예제
// connet-muliparty 미들웨어
// 모듈 추출
const express = require('express');
const fs = require('fs');
const multipart = require('connect-multiparty');
const app = express();
// 미들웨어 설정
app.use(multipart({ uploadDir: `${__dirname}/upload` }));
app.get('/', (request, response) => {
  fs.readFile('connect-multiparty.html', (error, data) => {
    response.send(data.toString());
  });
});
app.post('/', (request, response) => {
  const imgFile = request.files.image;
  const outputPath = `${__dirname}/upload/${Date.now()}_${imgFile.name}`;
  console.log(outputPath);
  console.log(request.body);
  console.log(request.files);
  fs.rename(imgFile.path, outputPath, () => {
    response.redirect('/');
  });
});
app.listen(5000, () => {
    console.log('Server is running at http://127.0.0.1:5000');
});

다른 컴퓨터로 하니까 제대로 찍힌다..저건 뭐였을까? 아직도 의문이다

 

 

 

express-session 미들웨어

-npm install parseurl --save와 npm install express-session --save로 먼저 설치

-express-session미들웨어는 request객체에 session 기능을 이용할 수 있게 해준다

새로고침할수록 request.session.views['/puddle]의 상수 횟수가 올라가서 2 times, 3 times 등 이렇게 됨