🚧 사전 작업
uuid 라이브러리 설치
고유 식별자(id)를 생성해주는 서드파티 라이브러리
npm install --save uuid
body-parser 패키지 설치
request.body에 있는 데이터에 접근하기 위해 사용하는 구문 분석 패키지
app.js
// 본문을 먼저 파싱 -> 본문의 json 데이터를 추출해서 객체나 배열 같이 일반적인 js 구조로 변환
app.use(bodyParser.json());
* body-parser ???
Express body-parser middleware
body-parser Node.js body parsing middleware. Parse incoming request bodies in a middleware before your handlers, available under the req.body property. Note As req.body’s shape is based on user-controlled input, all properties and values in this object a
expressjs.com
[node.js] body-parser을 정확히 알자
express를 사용하면 보통 아래와 같이 시작을 한다.보통 body-parser를 설명할때 'request.body에 있는 데...
blog.naver.com
express 미들웨어 body-parser 모듈
서버 공부를 시작하며 요청에 대한 응답을 주는 과제를 하는 중에 node.js 의 모듈 bodyParser의 존재를 알게 되었다. bodyParser 모듈 없이는 post, put 요청 메소드의 request.body를 읽어올 수 없어 일단 사
velog.io
🎁 POST (입출금 내역 추가)
transactions-routes.js
router.post("/", transactionsControllers.createTransaction);
router.post는 expess의 라우팅 메소드이다.
post 요청을 진행할 url과 라우트 일치 시에 실행되는 함수를 작성해 준다.
transactions-controller.js
const createTransaction = (req, res, next) => {
const { uid, category, title, amount, transaction_type, memo } = req.body;
const createdTransaction = {
tid: uuid(),
uid,
category,
title,
amount,
transaction_type,
memo,
};
DUMMY_TRANSACTION.push(createdTransaction);
res.status(201).json({ transaction: createdTransaction });
};
exports.createTransaction = createTransaction;
정상적으로 가계부가 게시되었는지 살펴보려면 post man을 이용해 직접 request를 날려보면 된다.
정상적으로 잘 응답받고 있다.
tid로는 uuid()로 생성한 id값이 들어가 있는 것을 확인할 수 있다.
🎨 PATCH (입출금 내역 수정)
transactions-routes.js
router.patch("/:tid", transactionsControllers.updateTransaction);
특정 id를 가진 입출금 내역을 수정한다.
transactions-controller.js
const updateTransaction = (req, res, next) => {
const { category, title, amount, transaction_type, memo } = req.body;
const transactionId = req.params.tid;
const updatedTransaction = {
...DUMMY_TRANSACTION.find((t) => t.tid === transactionId),
};
const transactionIndex = DUMMY_TRANSACTION.findIndex(
(t) => t.tid === transactionId
);
updatedTransaction.category = category;
updatedTransaction.title = title;
updatedTransaction.amount = amount;
updatedTransaction.transaction_type = transaction_type;
updatedTransaction.memo = memo;
DUMMY_TRANSACTION[transactionIndex] = updatedTransaction;
res.status(200).json({ transaction: updatedTransaction });
};
exports.updateTransaction = updateTransaction;
우선 특정 id를 가진 입출금 내역을 찾아온다.
이후에 찾아온 입출금 내역의 내용을 수정하여 저장해 준다.
🗑 PATCH (입출금 내역 삭제)
transactions-routes.js
router.delete("/:tid", transactionsControllers.deleteTransaction);
특정 id를 가진 입출금 내역을 삭제한다.
transactions-controller.js
const deleteTransaction = (req, res, next) => {
const transactionId = req.params.tid;
DUMMY_TRANSACTION = DUMMY_TRANSACTION.filter((t) => t.tid !== transactionId);
res.status(200).json({ message: "삭제 완료", transactionId });
};
exports.deleteTransaction = deleteTransaction;