댓글 삭제하기를 구현하면서 문제가 발생했다.
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://congsong.tistory.com/33?category=749196
https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Allow
반응형