--> REST api 에 따르면 새로운 데이터를 추가하는 method는 POST 를 쓰는 것을 권장
--> GET 메소드와는 다르게 body 라는 추가적인 정보를 담아 서버에 전달 할 수 있음
const express = require("express");
const Goods = require("../schemas/Goods");
const router = express.Router();
router.get("/goods", async (req, res, next) => {
try {
const { category } = req.query;
const goods = await Goods.find({ category }).sort("-goodsId");
res.json({ goods: goods });
} catch (err) {
console.error(err);
next(err);
}
});
router.post('/goods', async (req, res) => {
const { goodsId, name, thumbnailUrl, category, price } = req.body;
isExist = await Goods.find({ goodsId });
if (isExist.length == 0) {
await Goods.create({ goodsId, name, thumbnailUrl, category, price });
}
res.send({ result: "success" });
});
router.get("/goods/:goodsId", async (req, res) => {
const { goodsId } = req.params;
goods = await Goods.findOne({ goodsId: goodsId });
res.json({ detail: goods });
});
module.exports = router;
이 부분에서 post 메소드 설정 --> 우리가 데이터를 넣기 위한 api
router.post('/goods', async (req, res) => {
const { goodsId, name, thumbnailUrl, category, price } = req.body;
isExist = await Goods.find({ goodsId });
if (isExist.length == 0) {
await Goods.create({ goodsId, name, thumbnailUrl, category, price });
}
res.send({ result: "success" });
});
--> body부분에 데이터를 넣어 보내기 때문에 body에서 데이터를 전달 받는다.
--> 이후 전달된 데이터에 id부분을 확인하여 mongoDB에 해당 id의 데이터가 있는지 먼저 확인한 후,
없을 경우에 데이터를 삽입한다.
--> mongoDB에서 id 부분의 경우 unique설정 되어있을 것이기 때문에
만약 확인하지 않고 넣는다면 이미 해당 id를 가진 데이터가 있을 때 오류가 발생할 수 있다.
해당 부분 또한 위의 post api와 같은 path를 가지지만, 이것은 get api로 브라우저를 통해 들어온 요청( request )에 응답( response )하기 위한 코드이다.
--> 브라우저 상에서 해당 path로 api를 호출할 경우 이 코드가 실행된다.
router.get("/goods", async (req, res, next) => {
try {
const { category } = req.query;
const goods = await Goods.find({ category }).sort("-goodsId");
res.json({ goods: goods });
} catch (err) {
console.error(err);
next(err);
}
});
일반적인 방법으로 브라우저에서 호출할 경우 post api가 아닌 get api부분이 호출된다.
따라서 post와 같은 메소드를 호출하기 위해서는 다른 방법을 취해야하는데, 그 중 하나가 insomnia라는 프로그램이다.
--> post. put 등의 형식의 api에 request하기 위한 프로그램
insomia 다운 : https://insomnia.rest/download/]
--> Create로 내 명령 목록 만들기
(Request Collection)