해결된 질문
작성
·
717
·
수정됨
0
구현은 끝나서 swagger 만들고 있는데, 계속 swagger가 보내는 json을 못찾는것같습니다. request의 body에도 아무 값이 안나오네요. 도와주세요ㅠㅠ
API 코드
app.post("/users", async (req, res) => {
const newUser = req.body.newUser; // 여기에서 오류가 납니다.
if ((await isAuthPhone(newUser.phone)) === true) {
if (checkValidationEmail(newUser.email) === true) {
const og = await makeOG(newUser.prefer);
console.log(og);
const securePersonal = secure(newUser.personal);
const user = new UserCollection({
name: newUser.name,
email: newUser.email,
personal: securePersonal,
prefer: newUser.prefer,
pwd: newUser.pwd,
phone: newUser.phone,
og: og,
});
await user.save();
await sendWelcomeTemplateToEmail(newUser);
console.log(
`✅: "${user.name}" 사용자가 신규 가입에 성공했습니다.`
);
res.send(user._id);
} else {
res.status(422).send("NotValidationEmail");
}
} else {
res.status(422).send("NotAuthPhone");
}
});
Swagger 코드
(yaml 파일은 복붙하니까 이상하게 나와서 이미지로 첨부할게요)
(+ 이미지에선 parameter의 name이 body로 되어있지만, 위 API 코드에 맞춰서 name을 newUser로 설정했었지만 같은 에러가 떴었습니다.)
에러 메시지
Swagger parameter 화면
아무리 찾아도 방법을 모르겠어서 올립니다ㅠㅠ.... 도와주세요.....
답변 1
0
안녕하세요. Jeongwook Kim님
공유해주신 이미지로 오류 원인을 추측했을 때, phone 이라는 데이터 값을 가져오지 못하고 있는 것으로 확인됩니다.
작성한 로직을 살펴봤을 때, swagger 문서 상에서도 작성 로직과 같이 newUser 객체에서 데이터를 가져올 수 있도록 수정해 주셔야 합니다. schema 부분에 newUser 부분의 내용도 추가 작성해 보시길 바랍니다. 감사합니다.
Swagger를 활용하여 request.body 값을 서버에서 받아오기 위해서는 requestBody 키워드를 사용합니다. 해당 부분 공식문서 링크를 참고하여 Swagger 문서를 수정해 보시길 바랍니다. https://swagger.io/docs/specification/describing-request-body/
더불어 파라미터가 어떠한 역할을 하며, 언제 쓰이는지 학습해 보시고 해당 키워드를 필요한 상황에서 적용해 보시길 바랍니다.🙃
그런데 아예 request의 body값을 다 출력하게 했는데도 body 값이 {}라고 나와서요..
in: body 가 이렇게 쓰는게 아닌가요?