본문 바로가기

프로젝트

fetch() 를 사용했는데 응답 값을 받지 못한 이슈 ( 해결 완료 )

 

 

 

 

 

fetch("/login/nicknameCheck",{
                    method : "post",
                    headers : {"Content-Type":"application/json"},
                    body : JSON.stringify(data)
                })
                .then(res => res.json())
                .then(result => {
                    console.log("result : ", result);
                    if(result == 1){
                        alert("닉네임 중복체크를 진행해주세요.")
                    }else{
                        register();
                    }
                })

front 에서 fetch() 를 사용하여 POST 방식으로 서버에 데이터를 요청

 

 

 

 

const process = {
    nicknameCheck : async (req, res) => {
            let inputNickname = req.body.nickname;
            let result = await service.duplicationCheck.nicknameCheck(inputNickname);
            // 아이디가 존재할 시 result : 1
            // 아이디가 존재하지 않을시 result : 0
            res.json(result);
        }
}

controller 에서 localhost:3000/login/nicknameCheck 로 요청이 들어오기는 하나 프론트에서 보내준 파라미터 값이 서버에서 req.body 로 받아지지 않는 현상 발생

 

 

 

 

 

- 해결방법 -

const express = require("express");
const app = express();

const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());

const router = require("./src/routers/root_router")(app);
app.use("/", router);


app.set("views", "./src/views");
app.set("view engine", "ejs");

app.listen(3000, () => {
  console.log("3000 서버 구동");
});

최상단의 app.js 에서 app.use(bodyParser.json()); << 다음과 같이 json 형식의 파일을 bodyParser 미들웨어로 설정해 놓지 않아서 발생한 문제였다.

( post 형식의 데이터는 body-parser 를 사용하여 넘어오는 json 형식의 데이터를 변환시켜 사용해야 한다 )

 

위 설정 이후 console.log(req.body) 를 확인하니 정상적으로 값이 넘어온다.

 

오늘의 교훈 : POST 방식을 사용하면서 bodyParser 를 사용하지 않은 나는 바보이다....

728x90