[Express] 궁금해 render와 redirect 차이

jaeyunim00·2023년 2월 2일
2

nodeJS

목록 보기
4/8
post-thumbnail

renderredirect의 차이가 궁금해서 구글링해봤지만 전부 django에 관한 내용들만 보였다...

어쩌면 너무 쉬운거라 나빼고 다 알고 있던거일수도...?

암튼 그래서 공식문서를 참고해 혼자 분석해보기로 했다.

차이는 다음과 같다.

결론부터 간단하게 말하자면 render는 템플릿을 보낼 때, redirect는 경로(URL)을 보낼 때 사용한다. (그래도 자세하게 알아보면 좋으니 파해쳐보자!)

1. 매개변수의 차이

res.redirect([status,] path)

redirect경로와 함께 상태를 같이 보낸다.

여기서 상태http 상태코드에 해당하는 양의 정수다.

상태를 지정하지 않는다면 상태는 기본적으로 found라는 뜻을가진 302로 설정된다.

상태코드별로의 의미는 다음 사이트에 전부 정리 되어있다.

click!

사용법은 다음과 같다.

res.redirect(302, "myHome");

res.render(view [, locals][, callback])

render템플릿과 함께 객채를 전달하고, 콜백함수를 전달한다.

res.render('user', { name: 'jaeyun' }, function (err, html) {
  // ...
})

콜백함수는 err메시지와 템플릿의 html을 반환 해 준다.

render에서 상태코드를 쓰고싶다면 res.status(200).render(~) 이런 형식으로 작성하면 된다.

2. 보낼 수 있는 주소 차이

매개변수에서 알 수 있듯이 redirectpath(경로)를 전달한다.

때문에 다음과 같은 코드가 구글 웹사이트로 redirect되는걸 볼 수 있다

return res.redirect("http://google.com");

그래서 평소 개발할 때 router를 이용하는 것이다.

localhost:4000/login 이라는 페이지가 있다면

return res.redirect("/login")

router -> controller -> views로 통한다.

반면에 renderview 매개변수를 갖고 있다. 때문에 전달값에 경로를 입력해주면 오류가난다.

즉, 템플릿을 보내기 위한 response이다

3. 결론

생각보다 간단했다!

단순히 어떤 방식으로 페이지를 응답할 것인지 차이다

경로(URL), 라우터 + 상태를 보내고 싶으면 -> redirect
템플릿 전달 + 템플릿에 전달할 객체 + 콜백함수를 통한 오류, html확인을 원한다면 -> render

좀 더 심오한 내용은 공부하면서 느껴 보고 또 정리 해야겠다.

profile
개발노트

1개의 댓글

comment-user-thumbnail
2024년 3월 2일

thanx

답글 달기