댓글 삭제하기를 구현하면서 문제가 발생했다.
WARN 6520 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'DELETE' not supported]
댓글 삭제는 잘 된다. 하지만, 댓글 삭제 후 해당 게시글을 redirect하는데 405 에러가 뜬다.
redirct할 때 DELETE 메소드로 요청을 보내는게 문제 ㅠ
/post/detail/21은 댓글이 달린 해당 게시글이다.
PUT, GET 메소드만 허용한다고 한다.
✨ 해결
// 삭제
@PostMapping("/delete/{id}")
public String delete(@PathVariable("id") Long id, @RequestBody Map<String, String> map) {
Long post_id=Long.parseLong(map.get("post_id")); // 게시글 번호
commentService.delete(id);
return "redirect:/post/detail/" + post_id;
}
DELETE 대신에 POST방식을 써서 댓글을 삭제했다.
function deleteComment(idx){
if(!confirm('댓글을 삭제하시겠어요?')) {
return false;
}
var post_id=document.getElementById("postId");
var uri='/comment/delete/' + idx;
//var headers={"Content-Type" : "application/json", "X-HTTP-Method-Override" : "DELETE"};
var params = {"post_id" : post_id.value};
$.ajax({
url : uri,
type : "POST",
data: JSON.stringify(params),
contentType : 'application/json',
success : function(response) {
window.location.reload();
$("#commentModal").modal("hide");
},
error : function(xhr, status, error) {
alert("에러가 발생하였습니다.");
return false;
}
});
}
👇 참고
https://laracasts.com/discuss/channels/inertia/send-a-delete-request-and-redirect-back-405-error
https://laracasts.com/discuss/channels/inertia/send-a-delete-request-and-redirect-back-405-error
laracasts.com
https://congsong.tistory.com/33?category=749196
스프링 부트(Spring Boot) 게시판 - REST 방식으로 댓글 삭제 구현하기 [개발을 시작해봐요!]
1. 화면(뷰) 영역의 처리는 타임리프(Thymeleaf) 템플릿 엔진과 제이쿼리(jQuery)를 사용합니다. 2. 댓글 CRUD 처리하기에서 매퍼와 서비스 영역을 모두 처리하였기 때문에 컨트롤러부터 진행합니다. 3.
congsong.tistory.com
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Allow
Allow - HTTP | MDN
Allow 헤더는 리소스가 지원하는 메소드 집합을 나열합니다.
developer.mozilla.org