➡️ 애플리케이션에 들어오는 HTTP 요청들을 필터링하는데에 사용
req
, res
, next
가 매개변수인 함수1️⃣ . POST 요청등에 포함 된 body를 구조화 할 때 ( 쉽게 얻어내고자 할 때 )
2️⃣ . 모든 요청 & 응답에 CORS 헤더를 붙여야 할 때
3️⃣ . 모든 요청에 대해 url이나 method를 확인할 때
4️⃣ . 요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때
let body = [];
request.on('data' ,(chink) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// body 변수에 있는 buffer 데이터를 문자열로 변환
});
npm install body-parser
const bodyParser = require('body-parser');
const jsonParser = bodyParser.json();
// 생략
app.post('/users', jsonParser, function((req,res) {
// 헤더가 옵션과 일치하는 json 요청만 구문 분석하고 확인하는 미들웨어 반환
})
const jsonParser = express.json();
// 생략
app.post('/api/users', jsonParser, function (req, res) {
})
const jsonParser = express.json({strict: false});
// 생략
app.post('/api/users', jsonParser, function (req, res) {
})
{strict: false}
: 배열 및 개체 수락만 활성화(true
) 또는 비활성화(false
)합니다. 비활성화되면 모든 것을 허용writeHead
매서드를 이용할 수 있다.OPTIONS
메서드에 대한 라우팅도 따로 구현해야 함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(200, defaultCorsHeader); // 라우팅마다 매번 헤더를 넣어줘야함 res.end() }
npm install cors // npm 으로 cors 설치
- 모든 요청에 대해 CORS 허용
const cors = require('cors'); //생략 app.use(cors()) // 모든 요청에 CORS 적용 완료...
- 특정 요청에 대해 CORS 허용
const cors = require('cors'); // 생략 app.get('/product/:id', cors(), function(req, res, next) { res.json({msg : 'This is CORS-enabled for a Single Route'}) })
한눈에 봐도 간단해진 모습이다..
어제 과제에 미들웨어를 적용해봐야겠다.. 🤤