
๐ฏ Postman์ ํ์ฉํ์ฌ Express์ CRUD ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ํ ์คํธํด๋ณด์์ต๋๋ค.
API๋ฅผ ๊ฐ๋ฐํ๊ณ ์ฌ์ฉํ๋ ํ๋ซํผ์ผ๋ก API ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ ๋จ๊ณ๋ฅผ ๊ฐ์ํํ๊ณ ํ์
์ ์ํํ๊ฒ ํ์ฌ ๋ ๋์ API๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์๋๋ก ๋์ต๋๋ค. ์ถ์ฒ: postman

๐ง ์ postman์ ์ฌ์ฉํ ๊น?
API ์์ฒญ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๊ฐํธํ๊ฒ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. (๋ธ๋ผ์ฐ์ ์์ ํ์ธํ ์ ์๋
POST,PUT,DELETE์์ฒญ์ ์ฝ๊ฒ ํ์ธ ๊ฐ๋ฅ)
URL ํ๋ผ๋ฏธํฐ (Path Parameter)
/youtubers/:idURL ์ฟผ๋ฆฌ ์คํธ๋ง (Query String)
/movies?genre=horrorHTTP ๋ฐ๋ (Request Body)
POST, PUT ์์ฒญ์์ JSON์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. // express ๋ชจ๋ ์
ํ
const express = require('express');
const app = express();
app.listen(3000);
// ๋ฐ์ดํฐ ์
ํ
let book1 = {
title: '๋ชจ์',
author: '์๊ท์',
pages: 320,
};
let book2 = {
title: '๋ฐ๋ฏธ์',
author: 'ํค๋ฅด๋ง ํค์ธ',
pages: 270,
};
let book3 = {
title: '์ด๋ฆฐ ์์',
author: '์ํ
์ฅํ๋ฆฌ',
pages: 120,
};
let db = new Map(); // key-value
let id = 1;
db.set(id++, book1);
db.set(id++, book2);
db.set(id++, book3);
// REST API ์ค๊ณ
// ์ ์ฒด ์กฐํ
app.get('/books', (req, res) => {
res.json({
message: '์ฑ
์ ์ฒด ์กฐํ',
});
});
// ๊ฐ๋ณ ์กฐํ
app.get('/books/:id', (req, res) => {
let { id } = req.params;
id = parseInt(id);
// console.log(id);
const book = db.get(id);
if (!book) {
res.json({
message: '์๋ ์ฑ
์
๋๋ค.',
});
} else {
book.id = id; // book['id'] = id;
res.json(book);
}
});
// JSON ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฏธ๋ค์จ์ด
app.use(express.json());
// POST ์์ฒญ (์ฑ
์ถ๊ฐ)
app.post('/books', (req, res) => {
// body์ ์จ๊ฒจ์ ธ์ ๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅ
db.set(id++, req.body);
res.json({
message: `${db.get(id - 1).title} ์ฑ
์ด ์ถ๊ฐ๋์์ต๋๋ค.`,
});
});
์ฑ ๋ฐ์ดํฐ ์ ์ฅ
db.set(id++, book) โ ์ฑ
๋ฐ์ดํฐ๋ฅผ id์ ํจ๊ป Map์ ์ ์ฅํฉ๋๋ค.๋ฏธ๋ค์จ์ด ์ค์
express.json() โ POST ์์ฒญ์์ JSON ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋๋ก ์ค์ ํฉ๋๋ค. ์ด ์ค์ ์ผ๋ก req.body ์ ๊ฐ์ด undefined ์์ JSON์ผ๋ก ๋ณํ๋ฉ๋๋ค.
๋ฏธ๋ค์จ์ด(Middleware)๋?
์์ฒญ๊ณผ ์๋ต์ ์ค๊ฐ ์ญํ ์ ํ๋ ํจ์๋ก API ์ ์ฒ๋ฆฌ ์์ (๋ก๊ทธ, ๋ณด์, ๋ฐ์ดํฐ ๋ณํ, ์์ฒญ ์ฐจ๋จ) ๋ฑ์ ํด์ค๋๋ค.
๐ง ์ ํ์ํ๊ฑธ๊น?
์ผ์ผ์ด ๊ฐ API์์ ์ง์ ์ฒ๋ฆฌํ๋ฉด ์ฝ๋๊ฐ ๋๋ฌด ๋ณต์ก์ง๊ธฐ ๋๋ฌธ์ ์ค๊ฐ ์ฒ๋ฆฌ ๊ณผ์ ์ด ํ์ํ ๊ฒ์ ๋๋ค.
์๋ก์ด ์ฑ ์ถ๊ฐ
db.set(id++, req.body); โ ์ฑ
์ ๋ณด๋ฅผ ์๋ก์ด id์ ํจ๊ป ์ ์ฅํฉ๋๋ค.postman์์ POST๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ฑ
์ ์ถ๊ฐํ ๊ฒฐ๊ณผ ํ๋ฉด

์๋ก ์ถ๊ฐ๋ ์ฑ
์ GET์ ์ฌ์ฉํ์ฌ ๋ถ๋ฌ์จ ๊ฒฐ๊ณผ ํ๋ฉด

๋ฏธ๋ค์จ์ด์ ์ญํ ๋ก JSON์ ๋ค๋ฃฐ ์ ์๋ค๋ ์ ์ด ์ ๊ธฐํ๊ณ , postman์ผ๋ก ๋ธ๋ผ์ฐ์ ์์๋ ํ์ธํ ์ ์๋ post ๋ฑ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ด ํธ๋ฆฌํ์ต๋๋ค.
