put, patch 비교
400 오류
HTTP 400 Bad Request 응답 상태코드는 서버가 클라이언트 오류를 감지해 요청을 처리할 수 없거나 하지 않는다는 것을 의미한다. 클라이언트 오류로는 잘못된 요청구문, 유효하지 않은 요청 메시지, 또는 변조된 요청 라우팅 등이 있다.
포스트맨으로 요청을 보냈을때는 성공적으로 데이터베이스를 수정했는데, 브라우저에서 할때는 400 에러가 발생했다.
위의 세가지 원인을 따라 파일들을 확인해본 결과 라우팅을 제대로 해주지 않아서 오류가 발생했던 것이었다.
다음은 변경하기 버튼을 눌렀을때 작동하는 함수이다. body에 들어가는 데이터도 콘솔로 확인했을때 알맞게 들어갔고, 메소드도 "patch"로 설정해주었다.
const changePassword = () => {
// console.log(newPassword.password, email);
// console.log(isPossiblePw, isConfirmPw);
if (isPossiblePw && isConfirmPw) {
axios({
url: `${process.env.REACT_APP_SERVER_API}/user/findlogin/changepw`,
method: "patch",
body: {
password: newPassword.password,
email,
},
})
.then((res) => {
console.log("비밀번호 변경 완료");
history.replace("/login");
})
.catch((err) => {
console.log(err);
});
} else {
return alert("비밀번호가 일치하지 않습니다");
}
};
req.body를 보내는데 get요청으로 잘못 썼다거나 routes와 controller폴더 내의 파일을 수정해주지 않았는지 확인해보아야한다.
//router/userRouter.js
const {
findlogin
} = require("../controllers/user");
const express = require("express");
const router = express.Router();
router.patch("/findlogin/changepw", findlogin.changePw);
module.exports = router;
//controllers/user/index.js
findlogin: require("./findlogin")
참고