(서버에서는 라우팅 작업을 통해 클라이언트와 통신의 인터페이스를 제공해준다.)
1. 기본적인 라우팅 사용 방법
const express = require('express')
const app = express()
ㄴ 위와 같이 설정 코드를 작성한 후 app.get, app.post 등의 함수를 활용할 수 있다.
--
2. 함수 사용
ㄴ app 변수는 HTTP 메소드명에 해당하는 함수를 가지고있다.
아래의 함수를 주로 사용한다.
const express = require('express')
const app = express()
const port = 3000
app.get('/',(req,res)=>{
res.status(200).send('hello world')
})
app.listen(port, ()=>{
console.log('Example app listening at http://localhost:${port}')
})
// 작성 후 node app.js 명령어로 실행, localhost:3000에서 결과를 확인
const express = require('express');
const app = express();
const port = 3000;
const cors = require('cors');
let myLogger = (req, res, next) => {
console.log(`http request method is ${req.method}, url is ${req.url}`);
next();
};
app.use(myLogger);
app.use(cors());
app.get('/', (req, res) => {
res.status(200).send('hello world');
});
app.listen(port, () => {
console.log(`this app listening at http://localhost${port}`);
});
myLogger라는 함수를 만들어 메소드가 사용될 때마다 메소드명과 url을 출력하도록 해주었다.
아래 첨부사진(터미널) 확인
기존 - Node.js Buffer를 활용한 방법
let body = [];
request.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// body 변수에는 문자열 형태로 payload가 담겨져 있습니다.
});
body-parser 사용
const bodyParser = require('body-parser')
const jsonParser = bodyParser.json()
// 생략
app.post('/api/users', jsonParser, function (req, res) {
// req.body에는 JSON의 형태로 payload가 담겨져 있습니다.
})
기존 - writeHead,end 메소드 사용
const defaultCorsHeader = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Accept',
'Access-Control-Max-Age': 10
};
// 생략
if (req.method === 'OPTIONS') {
res.writeHead(201, defaultCorsHeader);
res.end()
}
cors 사용
1. 모든 요청/응답에 CORS헤더를 붙일 때
const cors = require('cors')
app.use(cors())
2. 특정 메소드에만 붙일 때
const cors = require('cors')
app.get('/products/:id', cors(), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})
http 요청에서 토큰이 있는지 여부를 판단, 이미 로그인했다면 성공, 아닐경우 에러를 보내는 미들웨어
app.use((req, res, next) => {
// 토큰이 있는 경우만 받아준다.
if(req.headers.token){
req.isLoggedIn = true;
next()
} else {
res.status(400).send('invalid user')
}
})