카테고리 없음

[express] res.render / res.redirect

개린이다 2023. 4. 16. 16:07

1. 목적

- res.render과 res.redirect를 번갈아가면서 쓰고 있는데, 이렇게 하는 이유가 있었던 것같은데 자꾸 명확하게 기억이 안나 간단히 정리하려고 한다.

 

2. res.render

view나 HTML string을 클라이언트한데 render할 때 사용

 

1) 형식

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

- locals

: render됨과 함께 보낼 로컬변수

- callback

: 말 그대로 콜백 함수 err 메시지와 템플릿의 html 반환

 

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

 

3. res.redirect

- HTTP status의 값을 path에 지정하여 path의 경로로 클라이언트를 보내준다. 상태를 지정하지 않으면 기본적으로 found라는 뜻을 가진 302로 지정된다. 

 

1) 형식

res.redirect([status,], path)

- status

: HTTP 상태코드

HTTP 상태 코드 

 

HTTP/1.1: Status Code Definitions

part of Hypertext Transfer Protocol -- HTTP/1.1 RFC 2616 Fielding, et al. 10 Status Code Definitions Each Status-Code is described below, including a description of which method(s) it can follow and any metainformation required in the response. 10.1 Inform

www.w3.org

- path

: 정규화된 URL (Ex. res.redirect("http://google.com") )

: 루트에 상대적인 URL

(Ex. app이 켜져있는 경우, http://example.com/admin/post/new 에서 res.redirect("/admin") 사용시 http://example.com/admin으로 이동됨) 

: 현재 URL에 상대적인 URL

(Ex. http://example.com/blog/admin/ 에서 res.redirect("post/new")를 사용할 경우 http://example.com/blog/admin/post/new 로 이동됨)

 

4. 둘의 차이

- render은 말 그대로 view나 HTML 을 render 시켜준다는 것이고, redirect는 말 그대로 path를 연결시켜주는 것이다. 

render를 사용하면 내가 사용하고 있던 페이지의 링크에 변함이 없겠으나, 

redirect를 사용하면 링크가 바뀐다.

그러므로 링크 자체가 바뀌어야 할 때 잘 구분하여 사용해야한다는 것!

 

5. 참고

https://expressjs.com/en/api.html

 

Express 4.x - API Reference

Express 4.x API express() Creates an Express application. The express() function is a top-level function exported by the express module. var express = require('express') var app = express() Methods express.json([options]) This middleware is available in Ex

expressjs.com

https://velog.io/@jaeyunim/Express-node%EA%B0%9C%EB%B0%9C-%EA%B6%81%EA%B8%88%EC%A0%90.-render%EC%99%80-redirect-%EC%B0%A8%EC%9D%B4