오늘 해결한 문제인데 rest api를 사용해 개발을 하던중 이런식으로 url을 짜니까
/popularlist 의 결과값이
// 상품상세보기
productRouter.get("/:id", async (req, res) => {
try {
const product = await Product.findOneAndUpdate({ _id: req.params["id"] }, { $inc: { views: 1 } }, { __v: 0 });
res.json({ okay: true, result: product });
} catch (error) {
res.send({ okay: false });
}
};);
// 실시간 인기상품 리스트
productRouter.get("/popularlist",async (req, res) => {
const a = await Product.find({});
console.log(a);
try {
const a = await Product.find({}).limit(3).sort("views");
console.log(a);
res.send({ result: a });
} catch (error) {
res.send({ result:"왜 다른라우터의결과값이나오나요?" });
}
};);
인섬니아로 테스트해봤을때
이런식으로 /:id 값의 response값을 가져왔다. (/popularlist의 결과값은
res.send({ result:"왜 다른라우터의결과값이나오나요?" }); 가 나와야하는 상황입니다)
알고보니 인섬니아가 상품상세보기(/:id)라우터로 인해 popularlist를 /:id 파라미터로 생각해 실시간 인기상품리스트가 아닌 상품상세보기 url을 불러온듯하다.
해결방법
/:id로 파라미터값을 기준으로 불러올땐 앞에 detail/:id 이런식으로 다른 단어를 추가해 url을 restful하게 만들어야한다.
댓글