<aside> 💡 요청 body에 @RequestBody 어노테이션 붙이기
</aside>
유저 컨트롤러 수정
@RequiredArgsConstructor
@Controller
public class UserController {
private final UserService userService;
private final HttpSession session;
// TODO: 회원정보 조회 API 필요 @GetMapping("/api/users/{id}")
@PutMapping("/api/users/{id}")
public String update(@RequestBody UserRequest.UpdateDTO requestDTO) {
User sessionUser = (User) session.getAttribute("sessionUser");
userService.update(sessionUser.getId(), requestDTO);
session.setAttribute("sessionUser", sessionUser);
return "redirect:/";
}
@PostMapping("/join")
public String join(@RequestBody UserRequest.JoinDTO requestDTO) {
userService.join(requestDTO);
return "redirect:/";
}
@GetMapping("/logout")
public String logout() {
session.invalidate();
return "redirect:/";
}
@PostMapping("/login")
public String login(@RequestBody UserRequest.LoginDTO requestDTO) {
User sessionUser = userService.login(requestDTO);
session.setAttribute("sessionUser", sessionUser);
return "redirect:/";
}
}
보더 컨트롤러 수정
@RequiredArgsConstructor
@Controller
public class BoardController {
private final BoardService boardService;
private final HttpSession session;
// TODO: 글 목록조회 API 필요 @GetMapping("/")
// TODO: 글 조회 API 필요 @GetMapping("/api/boards/{id}")
// TODO: 글 상세보기 API 필요 @GetMapping("/api/boards/{id}/detail")
@PostMapping("/api/boards")
public String save(@RequestBody BoardRequest.SaveDTO requestDTO) {
User sessionUser = (User) session.getAttribute("sessionUser");
boardService.save(requestDTO, sessionUser);
return "redirect:/";
}
@PutMapping("/api/boards/{id}")
public String findById(@PathVariable Integer id, @RequestBody BoardRequest.UpdateDTO requestDTO) {
User sessionUser = (User) session.getAttribute("sessionUser");
boardService.update(id, sessionUser.getId(), requestDTO);
return "redirect:/board/" + id;
}
// SSR(서버 사이드 렌더링)은 DTO 를 만들지 않아도 된다. 필요한 데이터만 렌더링해서 클라이언트에게
// 전달할 것이니까.
@DeleteMapping("/api/boards/{id}")
public String delete(@PathVariable Integer id) {
User sessionUser = (User) session.getAttribute("sessionUser");
boardService.delete(id, sessionUser.getId());
return "redirect:/";
}
}
리플라이 컨트롤러 수정
@RequiredArgsConstructor
@Controller
public class ReplyController {
private final ReplyService replyService;
private final HttpSession session;
@PostMapping("/api/replies")
public String save(@RequestBody ReplyRequest.SaveDTO requestDTO) {
User sessionUser = (User) session.getAttribute("sessionUser");
replyService.save(requestDTO, sessionUser);
return "redirect:/board/" + requestDTO.getBoardId();
}
@DeleteMapping("/api/replies/{id}")
public String delete(@PathVariable Integer id) {
User sessionUser = (User) session.getAttribute("sessionUser");
replyService.delete(id, sessionUser.getId());
return "redirect:/board";
}
}