[express] res.render / res.redirect
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/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