강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

haruharu님의 프로필 이미지
haruharu

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

게시글 제거 / 닉네임 변경

백엔드에대한 응답처리

작성

·

185

0

saga에서 백엔드 요청을하고 그에대한 응답처리도 saga에 작성해둔 try catch 문으로 해결하는데

여기서 백엔드에서 로그인 미들웨어로 로그인안된경우 응답을

exports.isLoggedIn = (req, res, next) => {
if (req.isAuthenticated()) {
next();
} else {
res.status(401).send('로그인이 필요합니다.');
}
};

이렇게 하게되어있습니다.

여기서 로그인 체크 미들웨어에서 로그인이 안되어서 응답을 401 로그인이 필요합니다로 전달하게되면 saga에서 작성된 try catch 에서 에러를 잡아서 상태를 변경하는데 만약 로그인이 되어있지않아 "로그인이 필요합니다"라는 응답을 메세지로 화면에 보여주고싶으면 이것도 saga에서 처리하는게 맞나요?

현재 코드는

function likePostAPI(data) {
return axios.patch(`/post/${data}/like`);
}

function* likePost(action) {
try {
const result = yield call(likePostAPI, action.data);
yield put({
type: LIKE_POST_SUCCESS,
data: result.data, // {PostId: ... UserId: ...}
});
} catch (err) {
console.error(err);
yield put({
type: LIKE_POST_FAILURE,
data: err.response.data,
});
}
}

에러발생시 응답으로 전달된 "로그인이 필요합니다." 에러메세지를 띄우려고 할 경우 아래처럼 작성하려는데 다른 좋은방법이있나요? 아니면 그냥 아래처럼 작성해도 괜찮을까요?? 

function likePostAPI(data) {
return axios.patch(`/post/${data}/like`);
}

function* likePost(action) {
try {
const result = yield call(likePostAPI, action.data);
yield put({
type: LIKE_POST_SUCCESS,
data: result.data, // {PostId: ... UserId: ...}
});
} catch (err) {
console.error(err);
alert(err.response.data);
yield put({
type: LIKE_POST_FAILURE,
data: err.response.data,
});
}
}

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

사가에서 응답에서 데이터를 받아서 아래처럼 alert하시면 됩니다.

haruharu님의 프로필 이미지
haruharu

작성한 질문수

질문하기