mongoose를 사용하여 mongoDB를 node.js에서 사용하기 3 + Insomnia(서버에 request하는 프로그램) + post ( api 표현 )
mongoDB에 데이터 추가하기 --> 상품을 추가하는 api
--> REST api 에 따르면 새로운 데이터를 추가하는 method는 POST 를 쓰는 것을 권장
POST메소드
--> GET 메소드와는 다르게 body 라는 추가적인 정보를 담아 서버에 전달 할 수 있음
라우팅 정보를 담고 있는 goods.js파일
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라는 프로그램이다.
Insomnia
--> post. put 등의 형식의 api에 request하기 위한 프로그램
insomia 다운 : https://insomnia.rest/download/]
Insomnia사용
--> Create로 내 명령 목록 만들기
(Request Collection)
New Request를 통해 새로운 Request를 만들 수 있음
어떤 메소드의 api로 request할 지 선택 가능
post와 같이 데이터를 보내는 메소드인 경우, 어떤 형식으로 데이터를 전달할지 선택 가능( body 부분 선택 )
post api에 request 할 것이며, 데이터는 JSON형식으로 보낼 것이므로 post,json으로 선택 후 create하면 이렇게 만들어진다.
보낼 주소(http://도메인/path)를 설정한 후, 보낼 데이터를 설정, 이후 Send버튼을 클릭하면 request가 진행된다.
이후 해당 request에 대한 response도 볼 수 있다.
Author And Source
이 문제에 관하여(mongoose를 사용하여 mongoDB를 node.js에서 사용하기 3 + Insomnia(서버에 request하는 프로그램) + post ( api 표현 )), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@odesay97/mongoose를-사용하여-mongoDB를-node.js에서-사용하기-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)