[개발지식] redirect

Hyo Kyun Lee·2025년 3월 18일
0

개발지식

목록 보기
76/84

1. 개요

redirect를 단순히 자원의 변경사항 적용을 위해 다른 url을 요청하는 행위로 알고있었지만, 이번에 새롭게 알게된 개념을 기록하였다.

mdn문서와 토스페이먼츠 기술 블로그의 내용이 거의 유사하여, 실제 현업의 관점에서 바라본 redirect 내용을 위주로 공부하였다.

2. redirect

말 그대로 다시 보낸다, 새로운 객체로 새로운 페이지 혹은 데이터를 전달한다.

client와 server의 관점에서 본다면

  • client는 server에 요청을 보낸다.
  • server는 서비스 동작을 처리하고 완료하였으며, 다른 페이지로 가야하므로 "다른 페이지"를 요청하라는 응답을 보낸다.
  • client는 응답을 받고, 이에 따른 자원 url을 다시 호출하여 응답에 대한 페이지를 다시 받게 된다.

쉽게 말하면

1) postmapping을 통해 처리한 후 redirect 요청을 하라는 응답을 보낸다.

@PostMapping("/form")
	public String boardSubmit(@ModelAttribute ThymBoard board) {
		//insert(without pk) or update(with pk)
		boardRepository.save(board);
		
		/*
		 * redirect board list page
		 * not simply "return the page" 
		 * but request the get post to get updated data
		 * */
		return "redirect:/board/list";
	}

2) client는 이에 대한 응답을 전달받아 다시 getmapping 요청을 보내고, 이에 대한 페이지로 이동하게 된다.

@GetMapping("/form")
	public String form(Model model, @RequestParam(required=false) Long id) {
		if(id == null) {
			//set Object to submit(mapped to th:object) without id value
			model.addAttribute("board", new ThymBoard());
		}else {
			//set Object to submit(mapped to th:object) with id value(to update) (*get data with id first)
			model.addAttribute("board", boardRepository.findById(id).orElse(new ThymBoard()));
		}
		
		
		//return html page
		return "board/form";
	}

3. redirect의 종류

redirect는 단순히 페이지를 다시 이동한다의 개념이 아닌, 상황에 따라 고객의 행동을 제어하는 통제실의 역할을 한다.

  • 영속적인 리다이렉션 : 원래의 url은 사용불가, 리다이렉션한 페이지는 영속된다.
    301 - 요청을 getMapping하여 다른 페이지로 영구히 이동(웹사이트 재편성)
    308 - 링크를 통한 다른 페이지로의 이동

  • 일시적인 리다이렉션 : 로딩 등 일시적인 진행률 등을 표기하기 위해 일시적으로 페이지를 이동한다.
    302 - 웹 페이지가 일시적인 오류로 동작하지 않을 경우, 기존 페이지를 갱신하지 않는다.
    303 - 동작을 버블링 하는 refresh를 막기 위한 리다이렉션, post or put 이후 사용
    307 - post or put 이후 일시적인 오류가 발생하였을 경우 사용하는 리다이렉션

  • 특수 리다이렉션

4. 참고자료

리다이렉트 (MDN) - https://developer.mozilla.org/ko/docs/Web/HTTP/Guides/Redirections#attr1
리다이렉트 (토스페이먼츠) - https://docs.tosspayments.com/resources/glossary/redirect
리다이렉트 진행도 - https://dololak.tistory.com/147

0개의 댓글