쌓고 쌓다
비회원이 댓글 작성 API POST 요청시 에러 메시지 띄우기 본문
비회원이 댓글 작성을 누르면 어떻게 에러 메시지를 띄울까 방법을 생각했다.
인터셉터로 처리하고싶었지만 댓글 작성은 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로 출력하도록 했다.
'프로그래밍 > spring' 카테고리의 다른 글
API 응답 포맷 만들기 (0) | 2023.12.02 |
---|---|
@JsonIgnore은 직렬화, 역직렬화 모두 무시 (0) | 2023.11.29 |
서블릿 컨테이너의 예외 처리, 오류 페이지 (0) | 2023.10.12 |
[스프링 부트] 인터셉터 인증 체크 - 33 (0) | 2023.10.05 |
Ajax data 여러개 넣어, @RequestBody로 여러개 받기? (0) | 2023.10.04 |
Comments