쌓고 쌓다

비회원이 댓글 작성 API POST 요청시 에러 메시지 띄우기 본문

프로그래밍/spring

비회원이 댓글 작성 API POST 요청시 에러 메시지 띄우기

승민아 2023. 10. 14. 21:20

비회원이 댓글 작성을 누르면 어떻게 에러 메시지를 띄울까 방법을 생각했다.

인터셉터로 처리하고싶었지만 댓글 작성은 AJAX로 이뤄진다.

 

 

먼저 서버에서 세션을 통해 비회원을 판별한다.

@PostMapping(value = "/comment/write", consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<Map<String, Object>> commentWrite(@SessionAttribute(name= SessionConst.LOGIN_MEMBER, required = false) Member member,
                                                        @RequestBody Comment comment) 
{
    Map<String, Object> m = new HashMap<>();
        if(member==null) {
            m.put("message", "로그인이 필요합니다.");
            return new ResponseEntity(m, HttpStatus.UNAUTHORIZED);
        }

        // 댓글 저장 로직
        
        m.put("status", HttpStatus.CREATED);
        m.put("message", "댓글 작성 성공");
        return new ResponseEntity(m, HttpStatus.CREATED);
}

member이 null이라면 에러 응답을 보내주면 된다.

응답 코드를 UNAUTHORIZED(401) 에러로 주어 AJAX 요청 코드 부분에서 실패 로직을 타도록 만들면 된다.

에러 응답 Body에 {"message" : "로그인이 필요합니다."} JSON 데이터를 담았다.

 

 

AJAX 응답으로 에러를 받았다면 타는 로직을 보자.

$.ajax({
    type: "post",
    url: "/comment/write?pno="+pno,
    dataType: "json",
    contentType: "application/json",
    data: JSON.stringify(reply_data),
    success: function () {
        loadComments(pno, 0);
    },
    error: function (error) {
        if(error.responseJSON && error.responseJSON.message) {
            alert(error.responseJSON.message);
        } else {
            alert("서버 에러 발생");
        }
    }
})

error에 responseJSON에 우리가 응답으로 보낸 데이터가 있다.

여기에 Body에 넣어준 message를 alert로 출력하도록 했다.

 

 

Comments