2018-5-1 반복주기 댓글삭제 기능 구7
반복주기 url정보를 이용해서 delete기능 구현하기
- 반복주기에서 댓글달기를 구현을 하고 있다. 내가 달았던 댓글삭제 기능을 구현을 했는데, 그 부분에서 고민을 했던 부분에 url을 어떻게 구분을 할것인가에 대한 고민을 했었다.
- 우선 AnswerController에는 기본적으로 “/questions/{quesionId}/answers”가 기본 url로 매핑이 되어있다.
- delete기능은 아래와 같이 구현이 되어있다.
@DeleteMapping("/{id}")
public String deleteAnswer(@PathVariable Long id, @PathVariable Long questionId, HttpSession session, Model model) {
Answer answer = answerRepository.findOne(id);
Result result = valid(session, questionRepository.findOne(questionId));
if (!result.isValid()) {
model.addAttribute("errorMessage", result.getErrorMessage());
return "/user/login";
}
answerRepository.delete(id);
return String.format("redirect:/questions/%d", questionId);
}
- id값을 입력을 받아서 answer에 대한 id를 받아오면 그것을 삭제를 하는 부분이다.
<form class="delete-answer-form" action="/questions//answers/" method="POST"></form>
- 처음에는 questionID와 answerID를 어떻게 구분을 하고 받아올지에 대한 고민을 했었는데, question객체안에 있는 id메소드를 호출을 하고 answers에 있는 getId를 호출을 해서 각각의 아이디를 구분을 했다.
- 그리고 위에서 Pathvariable에서 2개의 id를 구분을 해서 해당하는 메소드를 구분을 하고 delete가 동작이 되도록 구현을 했다.
오늘의 느낀점
- 처음에 반복주기를 구현을 했을떄는 덜 복잡했었는데, 점점 설계와 구현이 복잡해지고있다…. 엊그제부터 로그인 기능을 구현하는 부분까지는 괜찮았는데, 이제 ManyToOne의 관계나 유효성 검사에 대한 부분이 좀 많이 빡쎄지고 있다. 그리고 url에 어떻게 정보를 전달을 하고 url설계를 깔끔하게 할지에 대한 고민역시 많이 들고있다. 우선 반복주기를 빨리 끝내고 1-2번을 다시구현을 해야겠다.
Written on May 17, 2018