Spring-Boot, JPA로 질문답변 게시판 구현 과정 6-3 Ajax 활용 답변 삭제

2017-06-05 19:23

Spring-Boot, JPA로 질문답변 게시판 구현 과정 6-3 Ajax 활용 답변 삭제

질문에 대한 답변을 입력하고 답변하기 버튼을 클릭하면 답변이 표시되는데 답변삭제를 하면 405 오류가 발생합니다. 하지만 페이지 새로고침을 하면 정상적으로 답변이 삭제됩니다. 오류 처리는 어떻게 해야 되나요?

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Mon Jun 05 19:18:52 KST 2017 There was an unexpected error (type=Method Not Allowed, status=405). Request method 'GET' not supported

2개의 의견 from SLiPP

2017-06-06 07:15

에러 메시지의 원인은 서버 측에서 GET 요청을 처리할 수 없기 때문에 발생하는 에러입니다.

처리하는 방법은 두 가지가 있는데요. 서버 측에서 GET 요청을 지원하도록 수정하거나, Java Script 코드에서 GET이 아닌 다른 method를 사용하도록 수정하는 방법이 있습니다. 일반적으로 삭제의 경우에는 DELETE method로 요청을 보내 처리하는 것이 일반적입니다.

$.ajax({
    type: 'delete',
    url: url
    [...]
});

위와 같이 ajax 요청을 보낼 때 delete로 요청을 보냅니다. 그리고 서버 측에서는 이 delete 요청을 처리할 수 있도록 다음과 같이 구현할 수 있습니다.

@DeleteMapping(value="/api/questions/{questionId}/answers/{answerId}")
public Result deleteAnswer(@LoginUser User loginUser, 
    @PathVariable long questionId,
    @PathVariable long answerId) throws Exception {
    try {
        qnaService.deleteAnswer(questionId, answerId, loginUser);
        return Result.ok();
    } catch (CannotOperateException e) {
        return Result.fail(e.getMessage());
    }
}
의견 추가하기

연관태그

← 목록으로