0. 기본 설정
a. 프로젝트 시작하기
- npm init
b. 관련 패키지 설치
- npm install --save express
- npm install --save-dev nodemon
- npm install --save figlet
c. 실행 설정
- "start": "nodemon app.js"
d. 테스트 : postman 사용
1. App.js
const express = require('express');
const figlet = require('figlet');
const bodyParser = require('body-parser');
const feedRoutes = require('./routes/feed');
const app = express();
const PORT = 3000;
//=============================
// figlet을 이용한 콘솔 로고 출력
//=============================
figlet('ki tae - node js', function (err, data) {
if (err) {
console.log('Something went wrong...');
console.dir(err);
return;
}
console.log(data);
});
//=============================
// 미들웨어
//=============================
// app.use(express.urlencoded({ extended: false })); // application/x-www-form-urlencoded : <form> 태그로 전송된 데이터 처리
app.use(express.json()); // application/json : body-parser 대체
// CORS 설정
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*'); // 모든 도메인에서 접근 가능
res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET, POST, PUT, PATCH, DELETE'); // 허용 메소드
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // 허용 헤더
next();
});
app.use('/feed', feedRoutes); // 라우터 등록
//==============================
// 서버 실행
//==============================
app.listen(PORT, () => {
console.log(`http://localhost:${PORT}`);
});
2. 라우터(feed.js)
// feed 라우터
const express = require('express');
const feedController = require('../controllers/feed');
const router = express.Router();
// GET /feed/posts
router.get('/posts', feedController.getPosts);
// POST /feed/post
router.post('/post', feedController.createPost);
module.exports = router;
3. 컨트롤러(feed.js)
// feed 컨트롤러
exports.getPosts = (req, res, next) => {
res.status(200).json({
posts : [{
title: 'First Post',
content: 'This is the first post!'
}]
});
};
exports.createPost = (req, res, next) => {
const title = req.body.title;
const content = req.body.content;
res.status(201).json({
message: 'Post created successfully!',
post: { id: new Date().toISOString(), title: title, content: content }
});
};