java

[Spring] redirect

처누 2024. 1. 21. 17:39

 게시글 수정하기 기능 구현 중 다음과 같은 오류가 발생했다.

 

글 작성 후
글 수정 후

 

 글 수정 후에 URL이 바뀌지 않았을 뿐더러 게시글 리스트에 수정한 게시글도 보이지 않았다. 

 

@PostMapping("/board/edit/{id}")
    public String edit(@PathVariable Long id, BoardForm form) {
        Board board = boardService.findByOne(id).get();
        board.setTitle(form.getTitle());
        board.setContent(form.getContent());

        boardService.edit(board);

        return "/board/showBoardList";
    }

 

 위 코드에서 '/board/showBoardList'를 반환하는데 이 부분이 문제였다.

 GET과 POST는 명확하게 역할이 정해져있다. GET은 리소스 요청, POST는 리소스를 생성하는 역할이 있다. 하지만 위 코드에선 POST가 리소스 생성과 요청을 동시에 하고 있다. 따라서 URL이 바뀌자 않고, 게시글 리스트도 제대로 조회되지 않은 것이다.(URL이 바뀌지 않는 것까진 이해했는데 왜 게시글 리스트도 안보이는지는 모르겠음... 번호/제목은 왜 뜨는거고...)

 따라서 클라이언트한테 리다이렉트할 주소를 알려주고(redirect:/board/list) 이를 GET요청(/board/list)을 다시 보내게 해야한다.

@PostMapping("/board/edit/{id}")
    public String edit(@PathVariable Long id, BoardForm form) {
        Board board = boardService.findByOne(id).get();
        board.setTitle(form.getTitle());
        board.setContent(form.getContent());

        boardService.edit(board);

        return "redirect:/board/list";
    }