본문 바로가기

웹, 데이터베이스, 네트워크 프로그래밍/수업 내용

서버만들고 응답-2

learn-nodejs

server1.js

const http = require('http')
const fs = require('fs').promises

http.createServer(async (req, res)=>{

    try{
        const buffer = await fs.readFile('./server2.html')
        res.writeHead(200, {'Content-Type': 'text.html; charset=utf-8'})
        res.end(buffer)
    }catch(err){
        console.error(err)
        res.writeHead(500, {'Content-Type': 'text.html; charset=utf-8'})
        res.end(err.message)
    }
})
.listen(8080, ()=>{
    console.log('8080포트에서 서버 시작됨...')
})

server2.js

const http = require('http')

http.createServer((req, res)=>{
    //요청을 받고 응답을 하는 콜백 함수
    if(req.url === '/'){
        res.write('hello')
        res.end()
    }
}).listen(8080, ()=>{
    //서버 시작시 실행되는 콜백 함수
    console.log('8080포트에서 서버 대기중...')
})

server2.html

!엔터

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Node.js 웹 서버</title>
</head>
<body>
    <h1>Node.js 웹 서버</h1>
    <p>준비 완료</p>
    <p>Hello World!</p>
</body>
</html>

express1.js

const express = require('express');
const app = express();
//const port = 8080;
//app.set('port', 8080);
app.set('port', process.env.PORT || 8080);

app.get('/', (req, res)=>{
    //_dirname은 현재 실행중인 파일이 포함된 디렉토리의 절대경로를 알려주는 환경변수
    const path = __dirname + '/index.html';
    console.log(path);
    res.sendFile(path);
});

const port = app.get('port');
app.listen(app.get('port'), ()=>{
    console.log(`port: ${port}에서 서버 실행중...`);
});

express2.js

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

//미들웨어
const myLogger = function(req, res, next){
    console.log('logged');
    next();
};

//미들웨어 등록
app.use(myLogger);

//라우터
app.get('/', (req, res)=>{
    res.send('<h2>Hello World!</h2>');
});

//서버를 시작
app.listen(8080, ()=>{
    console.log('8080포트에서 서버 시작됨');
});

index.html

!엔터

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>express로 웹 만들기</title>
</head>
<body>
    <h2>express로 웹 만들기</h2>>
    <p>메인 페이지 입니다.</p>
</body>
</html>

-> 모듈 만들어서 코드 나누기

express2.js

const express = require('express');
const app = express();
const myLogger = require('./myLogger');

//미들웨어 등록
app.use(myLogger.log);

//라우터
app.get('/', (req, res)=>{
    res.send('<h2>Hello World!</h2>');
});

//서버를 시작
app.listen(8080, ()=>{
    console.log('8080포트에서 서버 시작됨');
});

myLogger.js

//미들웨어 정의
const myLogger = function(req, res, next){
    console.log('logged');
    next();
};

//모듈
module.exports = {
    log : myLogger
};

 

moment npm 설치하기

myRequestTime.js

//날짜 포멧 모듈 가져오기 
const moment = require('moment');

//미들웨어 함수 정의 
const reqTime = function (req, res, next){
    req.requestTime = moment(Date.now()).format("YYYY-MM-DD HH:mm:ss");
    next();
};

//모듈화 
module.exports = reqTime;

express2.js

const express = require('express');
const app = express();
const myLogger = require('./myLogger');
const myReqTime = require('./myRequestTime');

//미들웨어 등록 
app.use(myLogger.log);
//미들웨어 등록 
app.use(myReqTime);

//라우터 
app.get('/', (req, res)=>{
    res.send(`<h2>Hello World! ${req.requestTime}</h2>`);
});

//서버를 시작 
app.listen(8080, ()=>{
    console.log('8080포트에서 서버 시작됨');
});