해당글은 오늘 공부한 내용을 정리하여 메모하는 형식으로 작성한 것으로
설명이나 이해를 돕는 글이 아님을 명시합니다.
console 외의 디버깅 방법
Node debugging guide
--inspact
: chrome console 창에 디버깅메뉴가 생성--inspact-brk
: 시작하자마자 debugger를 걸고 싶을 때기본 서버 구현 및 express refactoring 구현
case 1 : POST 요청 등에 포함된 body(payload)를 구조화할 때
/* http 모듈 서버 */
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가 담겨져 있다.
})
// 모든 요청에 설정 추가
app.use(bodyParser.json())
/* 4.x 버젼 이후 부터 express 기본 기능에 추가 */
app.use(express.json());
app.use(express.urlencoded({ extended: true }))
case 2 : 모든 요청/응답에 CORS 헤더를 붙일 때
/* http 모듈 서버 */
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 미들웨어 - 모든 요청에 대해 CORS 허용 */
const cors = require('cors')
app.use(cors())
/* cors 미들웨어 - 특정 요청에 대해 CORS 허용*/
const cors = require('cors')
app.get('/products/:id', cors(), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})
case 3 : 모든 요청에 대해 url이나 메소드를 확인할 때
app.get('/', function(req, res, next){
next();
})
app.listen(3000);
const express = require('express');
const app = express();
/* 모든 요청에 대해 LOGGED가 출력 */
const myLogger = function (req, res, next) {
console.log('LOGGED');
next();
};
/* */
const myURL = function (req, res, next) {
console.log(`http request method is ${req.method}, url is ${req.url}`);
next();
};
app.use(myLogger);
app.use(myURL);
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.listen(3000);
case 4 : 요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때
app.use((req, res, next) => {
if(req.headers.token){
req.isLoggedIn = true;
next()
} else {
res.status(400).send('invalid user')
}
})
정적 웹페이지(Static Web Page)
동적 웹페이지(Dynamic Web Page)
Web Service Architecture