RedirectAttributes

바그다드·2023년 5월 3일
0
  • 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 값을 이용해 저장 완료라는 글자를 띄울 수도 있다!!!
profile
꾸준히 하자!

0개의 댓글