Express 설치
npm install express
웹 서버 만들기
const express = require('express');
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello world!');
});
app.listen(port, () => {
console.log(`Example app listening on port ${port}`);
});
const router = express.Router();
router.get('/lower', (req, res) => {
res.send(data);
})
router.post('/lower', (req, res) => {
})
node.js와 다르게 Express 는 Router 기능을 프레임워크 자체에서 제공하기 때문에 더 직관적인 코드를 작성할 수 있다.
프로세스 중간에 관연하여 요청에 필요한 기능을 더하거나 문제 발견 시 걷어내는 역할
Node.js에서 HTTP body 데이터를 받을 때는 네트워크 상의 chunk를 합치고, buffer를 문자열 형태로 변형시키는 작업을 통해 얻을 수 있었다.
npm install body-parser
const bodyParser = require('body-parser');
const jsonParser = bodyParser.json();
app.post('/users', jsonParser, function(req, res){
//작업
});
const jsonParser = express.json();
app.post('/users', jsonParser, function(req, res){
//작업
})
express.json([options])
Node.js 에서 응답 객체의 writeHead
메서드를 이용하여 CORS 헤더를 붙이고, OPTIONS
메서드에 대한 라우팅을 따로 구현해야 했다.
npm install cors
const cors = require('cors');
app.use(cors()); //모든 요청에 대해 CORS 허용
app.get('/products/:id', cors(), function(req, res, next){
res.json({msg: 'This is CORS-enabled for a Single Route'})
}); //특정 요청에 대해 CORS 요청
로거 (logger) 는 가장 단순한 미들웨어의 일종으로 디버깅이나 서버 관리에 도움이 되기 위해 console.log
를 이용하여 데이터나 정보를 출력한다.
특정 endpoint 가 아니라 모든 요청에 동일한 미들웨어를 적용하려면 app.use
를 사용한다.
const express = require('express');
const app = express();
const myLogger = function(req, res, next){
//console.log('LOGGED');
console.log(`http request method is ${req.method}, url is ${req.url}`);
next();
};
app.use(myLogger);
app.get('/', function(req, res){
res.send('Hello World!');
});
app.listen(3000);
HTTP 요청에 토큰의 여부 판단하여, 이미 로그인한 사용자일 경우 성공, 아닐 경우 에러를 보내는 미들웨어
* 토큰 (Token) : 주로 사용자 인증에 사용
app.use((req, res, next) => {
if(req.headers.token){
req.isLoggedIn = true;
next();
//토큰이 있다면 사용자 로그인 true, next 실행
} else {
res.status(400).send('invalid user');
//토큰이 없다면 400 Bad Request 에러 보냄
}
})
npm install express
const express = require('express');
const app = express();
npm install body-parser
const bodyParser = require('body-parser');
const jsonParser = bodyParser.json();
app.use(express.json()); // 배열과 객체만 파싱
app.use(express.json({strict:false})); // 모든 바디 부문 파싱
npm install cors
const cors = require('cors');
app.use(cors());
//대문자 변환
app.post('/upper', function(req, res){
let result = req.body.toUpperCase();
res.json(result); //응답보낼 때 json화 하여 보냄
})
//소문자 변환
app.post('/lower', function(req, res){
let result = req.body.toLowerCase();
res.json(result);
})
//에러 처리
app.use(function(req, res, next){
res.status(404).send("Error 404!");
})
//listen
const PORT = 4999;
const ip = 'localhost';
app.listen(PORT, ip, () => {
console.log(`http server listen on ${ip}:${PORT}`);
})