까뮈_b
까뮈의 개발 노트
까뮈_b
전체 방문자
오늘
어제
  • 분류 전체보기 (23)
    • JAVA (0)
    • Spring (4)
    • JPA (1)
    • JavaScript (1)
    • DB (0)
      • Mysql (0)
    • Tools (4)
      • IntelliJ (2)
      • WebStorm (1)
      • Flyway (1)
    • 에러노트 (2)
    • 생각노트 (1)
    • Git (4)
    • HTML&CSS (1)
    • Laravel (2)
    • AWS (3)
    • Server (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 구조 분해 할당
  • spring
  • 무중단배포
  • 리버스 프록시 서버
  • componentscan
  • EC2 호스트네임 변경
  • AWS
  • Non-ASCII Characters
  • ElasticBeanstalk
  • 111: Connection refused
  • 502 Bad Gateway
  • netstat
  • Amzone Linux AMI 2
  • start.spring.io
  • AWS ElasticBeanstalk
  • 컴포넌트 스캔
  • webstorm keymap
  • ElasticBeanstalk 버그
  • DBEngineVersion
  • 의존관계 주입

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
까뮈_b

까뮈의 개발 노트

Laravel

laravel에서 redirect()와 return view() 두 헬퍼함수의 역할과 차이

2021. 11. 6. 13:52

컨트롤러 내에서 작업 수행 후 특정 view페이지를 보여주거나, 현재 페이지를 벗어나서 다른 페이지로 리디렉션 시키고자 할 때가 있다. 이 때 각각 view() 와 redirect() 헬퍼함수를 호출하여 사용한다.

 

redirect()와 view() 두 헬퍼함수는 용도가 전혀 다르지만, 뷰페이지가 바뀌는 점은 같으므로 언제 어떻게 사용해야될지 살짝 헷갈릴 수 있다.

 

결론부터 말하면, redirect()는 uri를 변경시키는 함수다. 그러므로 사용자의 인증과 인가에 관련되어 해당 요청이 실패했을 때 uri를 변경시켜 사용자를 현재 페이지에서 벗어나게끔 할 때 사용한다. 

 

반면에 view()는 특정 uri 요청이 들어왔을 때, 특정 view페이지를 반환해서 화면에 띄워주고 싶을 때 사용한다. 인증과 인가

 

먼저, view() 헬퍼함수에 대해 알아보자.

view()는 resouces/views 안에 있는 blade파일의 위치를 첫번 째 파라미터로 전달받아, 해당 blade파일을 렌더링하여 보여주는 함수다.

단순히 뷰페이지만 보여주는 용도라면 라우팅된 컨트롤러의 메소드 안에서 아래와 같이 함수를 사용하면 된다.

    public function edit(Qnaboard $qna)
    {
        return view('qnas.edit', compact('qna'));
    }

 

 

 

다음으로, redirect() 헬퍼함수에 대해 알아보자.

redirect()는 아래와 같이 route()를 메서드 체이닝 시켜 자주 사용한다.

return redirect()->route('qnas.index');

 

 

view 헬퍼함수는 말 그대로 view페이지를 반환하기 위해 사용하는 함수이다. 클라이언트가 /login 이라는 uri를 입력하면, 해당 uri에 라우팅된 컨트롤러의 메소드나 클로저 내에서 로그인화면을 반환하고자 할 때 사용한다.

 

반면에, redirect()는 uri을 변경시키는 용도로 사용한다. 로그인한 사용자 또는 특정 등급 이상의 사용자만 게시글을 볼 수 있는 회원제 게시판이 있다고 가정하자. 이 때, 사용자가 인증과 인가 절차에 실패했을 때. 즉, 권한이 없는 사용자가 접근 했을 때 return view('login'); 과 같은 형태로 로그인페이지를 띄우는 것은 REST API 원칙에도 어긋나며, 또 다시 로그인 작업을 코드로 중복되게 작성해야하는 등 적절하지 않은 방법이다.

 

부가적으로, redirect() 는 리다이렉트이므로 당연히 http 상태코드 301를 반환하지만, view()는 정상코드인 200을 반환하는 차이점이 있다.

 

'Laravel' 카테고리의 다른 글

[Laravel] 라라벨 블레이드 템플릿 문법 기초  (0) 2021.11.23
    'Laravel' 카테고리의 다른 글
    • [Laravel] 라라벨 블레이드 템플릿 문법 기초
    까뮈_b
    까뮈_b
    까먹지 않기 위해서 개발 관련 시행착오를 정리한 포스트를 작성합니다.

    티스토리툴바