- POST요청을 처리할 때 스프링에서는 'redirect:'를 활용해 간단하게 리다이렉트 응답을 반환할 수 있다. 먼저 redirect응답을 하는 코드를 예시로 확인해보자
@PostMapping("/add")
public String addItemV5(Item item) {
itemRepository.save(item);
return "redirect:/basic/items/" + item.getId();
- 위의 코드는 리다이렉트를 통해 basic/items 밑에 item의 id를 쿼리 파라미터로 보내 해당 리소스로 연결 시킨다. 그런데 url에 한글을 파라미터 값으로 넘기면 인코딩 문제가 생길 수도 있고, 상품 등록을 완료하고 해당 상품 상세페이지로 리다이렉트 할 때 고객 입장에서는 상품 등록이 실제로 완료되었는지 헷갈릴 수 있는 문제가 생긴다. 이런 문제는 어떻게 해결해야 할까?
RedirectAttributes
@PostMapping("/add")
public String addItemV5(Item item, RedirectAttributes redirectAttributes) {
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());
redirectAttributes.addAttribute("status", true);
return "redirect:/basic/items/{itemId}";
}
- RedirectAttributes는 URL인코딩과 pathVariable, 쿼리파라미터를 처리해준다.
- 위의 코드처럼 값을 반환하면 itemID는 pathVariable로, status는 쿼리 파라미터로 데이터가 넘어가게 된다.


- url을 확인해보면 itemID는 pathVariable로, status는 쿼리 파라미터로 데이터가 넘어간 것을 확인할 수 있다.
또한 status 값을 이용해 저장 완료라는 글자를 띄울 수도 있다!!!