HTTP Method에는 여러가지가 있지만, 가장 많이 사용하는 것은 아래 네가지이다.
- get : 요청 받은 정보를 검색(read)하여 응답
- post : 요청된 자원을 생성(create)
- put : 요청된 자원을 수정(update)
- delete : 요청된 자원을 삭제(delete)
라우팅
라우팅은 클라이언트의 요청에 맞게 분기처리해서 응답하도록 하는 것을 의미한다.
routes/index.js
var express = require('express');
var router = express.Router();
// post method
let arr = [];
router.post('/create', (req, res) => {
const data = req.body.data // body의 raw json에서 key값이 data인 value를 data라는 변수로 담음
// 만약 변수이름과 key값이 같다면
// const {data} = req.body; 로 써도 동일함!!
arr.push(data);
res.status(200).json({
message: "create success",
result: arr,
});
})
// get method
router.get('/read', (req, res) => {
res.status(200).json({
message: "read success",
});
})
// put method
router.put('/update/:id', (req, res) => {
const { id } = req.params;
const {data} = req.body;
arr[id] = data;
res.status(200).json({
message: "update success",
result: arr,
});
})
// delete method
router.delete("/delete/:id", (req, res) => {
const {id} = req.params;
arr.splice(id, 1);
res.status(200).json({
message: "del success",
result: arr,
});
})
module.exports = router;
미들웨어
요청(req)와 응답(res) 사이의 과정에서 목적에 맞게 한 번에 처리하는 함수.
로그인 상황을 예로 들자면, 로그인을 위해선 'create'(post), 'delete', 'update'(put)의 과정을 개별의 함수가 각각 실행해야 하는 비효율이 존재한다. 하지만 미들웨어로 하나의 함수에 통합하면, 특정 목적에 맞게 해당 업무를 한 번에 처리할 수 있게 된다.
app.js
// middleware
// 어떤 요청이 들어와도 미들웨어를 우선 실행하게 함.
app.use((req, res, next) => {
console.log("middleware입니다!");
next();
})
routes/index.js
var express = require('express');
var router = express.Router();
const loginCheck = require('../module/loginCheck'); // 외부 js로 빼내고 불러오기
// login
router.get('/', loginCheck, (req, res) => {
res.status(200).json({
message: "login success입니다",
});
})
module.exports = router;
module/loginCheck.js
loginCheck를 별도의 파일로 분리했다.
const loginCheck = (req, res, next) => {
const userLogin = true; // 로그인이 true라면
if (userLogin) {
next();
} else {
res.status(400).json({
message: "login fail입니다",
});
}
};
module.exports = loginCheck; // loginCheck 내보내기
'CODE > Back-end' 카테고리의 다른 글
Prisma와 PlanetScale - [1] ORM (0) | 2022.06.09 |
---|---|
multer로 이미지 업로드 기능 만들기 (0) | 2022.01.01 |
NPM 패키지 설치와 Express, Nodemon (0) | 2021.12.31 |
API 서버 만들기 (0) | 2021.12.31 |
Node.js (0) | 2021.12.27 |
댓글