728x90
반응형
req.params
- 라우터의 매개변수
- 예를 들어 /:id/:name 경로가 있으면 ":id"속성과 ":name"속성을 req.params.id , req.params.name 으로 사용할 수 있다.
www.example.com/post/1/jayden 일 경우 1과 jayden을 받는다.
router.put("/posts/:postId", async (req,res)=>{
const {postId} = req.params;
const {password, title, content} = req.body;
try {
const existPost = await Posts.findOne({postId});
if (!existPost) {
throw new Error("유효하지 않은 post ID")
};
if (password !== existPost.password){
throw new Error("비밀번호가 틀립니다.")
};
await Posts.updateOne(
{postId},
{$set : {title, content}}
);
res.status(200).json({message: "게시글을 수정하였습니다."});
} catch (error) {
next(error);
}
});
위의 예제를 살펴보면 const {postId} = req.params;
라고 상수로 선언해놨다 이것은 라우터의 매개변수를 {postId}에 저장한다는 뜻이라고 생각하면 된다.
req.query
- 경로의 각 쿼리 문자열 매개 변수에 대한 속성이 포함 된 개체다. (주로 GET 요청에 대한 처리)
- 예를 들어 www.example.com/post/1/jayden?title=hello! 이면, title=hello! 부분을 객체로 매개변수의 값을 가져온다.
req.body
- JSON 등의 바디 데이터를 담을때 사용한다.
- 주로 POST로 유저의 정보 또는 파일 업로드(formdata)를 보냈을 때 사용
- 요청 본문에 제출 된 키-값 데이터 쌍을 포함한다.
router.put("/posts/:postId", async (req,res)=>{
const {postId} = req.params;
const {password, title, content} = req.body;
try {
const existPost = await Posts.findOne({postId});
if (!existPost) {
throw new Error("유효하지 않은 post ID")
};
if (password !== existPost.password){
throw new Error("비밀번호가 틀립니다.")
};
await Posts.updateOne(
{postId},
{$set : {title, content}}
);
res.status(200).json({message: "게시글을 수정하였습니다."});
} catch (error) {
next(error);
}
});
위의 예제에서 확인해보면 주로 Post로 유저의 정보 또는 파일을 업로드 할때 사용하고
예제는 put(수정)할때 사용했다.
postId 값을 params로 가지고 오고
password, title, content는 새롭게 데이터를 바꿔줄것이기 때문에 body로 가져왔다.
그렇게 생각하면, post, put, delete 로 유저의 정보나 파일을업로드 한다면 사용될 거같다.
728x90
반응형
'📁 𝐟𝐫𝐚𝐦𝐞𝐖𝐨𝐫𝐤 > Express.js' 카테고리의 다른 글
Layered architecture pattern (레이어드 아키텍쳐 패턴) (1) | 2023.02.19 |
---|