기존 connect.Server는 노드의 코어인 net.Server를 상속했는데요, HTTP와 HTTPS를 모두 제공하기가 어려웠습니다. 이전에는 connect.createServer()였습니다만 이제 새로운 connect() 는 간단한 자바스크립트 함수입니다. 따라서 이젠 아래와 같은 식으로 app.listen()호출을 생략하고 app을 노드의 net.Server로 간단히 넘길 수 있습니다.
bodyParser()미들웨어는 이제 단순히 json(), multipart(), 그리고 urlencoded() 를 추가하는데 쓰는 축약표현에 불과합니다. 해당 함수들은 파싱된 값들을 req.body 에 담습니다. 그리고 multipart()는 업로드를 위해 req.body``와 ``req.files를 제공합니다.
== bodyParser 소스코드 == exports = module.exports = function bodyParser(options){ var _urlencoded = urlencoded(options) , _multipart = multipart(options) , _json = json(options); return function bodyParser(req, res, next) { _json(req, res, function(err){ if (err) return next(err); _urlencoded(req, res, function(err){ if (err) return next(err); _multipart(req, res, next); }); }); } };
Core compression
Node 0.6.0에서 빠른 네이티브 압축능력들을 제공하는 관계로, 이제 우리도 gzip과 deflate를 지원하는 compress() 미들웨어를 갖게 되었습니다.
Cookie parser
cookieParser() 미들웨어는 이제 싸인된 쿠키들(signed cookies)과 secret을 받아들입니다. 해당 기능은 session({ secret: string })을 session()미들웨어로 넘길 필요성을 교체하였습니다. 싸인된 쿠키들은 req.signedCookies를 통해서, 그리고 싸인되지 않은 쿠키들은 req.cookies를 통해 사용가능합니다.
Error delegation
이전의 몇몇 코어 미들웨어는 에러 상황들에 직접 응답해야 했었습니다.. 해당 사항들은 단순히 next(err) 를 함게 쓰는 걸로 변경되었습니다. 이렇게 변경함으로써 에러 핸들링 미들웨어를 추가함으로써 커스터마이즈된 행동들을 지정하는 것이 가능해졌습니다.
app.use(function(err, req, res, next){
if (4 == err.status / 100) {
// render a client-error page
} else {
// render a server-error page
}
});
Session
앞서 언급했던 것처럼 session()은 더이상 secret을 필요로 하지 않습니다. .maxAge 쿠키는 null이 기본값이었는데요, 브라우저 세션쿠키가 된다는 뜻이고요, 방문자가 브라우저를 닫으면 만료됩니다.
Third-party middleware
서드파티 미들웨어는 완벽하게 동작 합니다만 이번 Connect 릴리즈는 Express 2.x 와 호환되지 않습니다. 곧 Express 3.0 이 나올예정입니다.
Changelog
공개된 API에 영향을 주지않는 것들을 포함해서 다음과 같은 중요한 변경이 이루어졌습니다. 마찬가지로 Mocha를 사용해서 테스트를 다시 다 작성했습니다.
쿠기만으로 동작하는 세션을 위한 cookieSession() 미들웨어 추가
gzip/deflate 지원을 위한 compress() 미들웨어 추가middleware for gzip / deflate support
X-Forwarded-Proto 인증을 위한 session() “proxy” 세팅 추가
"application/json" 파싱용 json() 미들웨어 추가
"application/x-www-form-urlencoded" 파싱을 위한 urlencoded() 미들웨어 추가
"multipart/form-data" 파싱을 위한 multipart() 미들웨어 추가
cookieParser(secret) 지원. 이 미들웨어를 통하면 싸인된 쿠기에 접근할 수 있음
cookieParser()가 싸인된 쿠키를 지원함
cookieParser()가 직렬화된 JSON 쿠키를 지원함
Connect의 기본 엔드포인트(default end-point)에서 err.status를 지원함
staticCache()에 X-Cache MISS / HIT가 추가됨
퍼블릭 res.headerSent에 res._headerSent 노드를 먼저 체크하는 것이 추가됨
@doortts (doortts) 님이 작성한 게시글입니다. ---
우리의 미치광이 개발자 TJ Holowaychuk가 Connect 2.0 을 공개하였습니다. Express의 근간이 되는 모듈이죠. 곧 Express 3.0이 나올예정인데요, Express 사용자라면 한번쯤 봐두면 도움이 될 겁니다. : )
Connect 2.0
새로운 코어 미들웨어와 여러가지 개선사항, 그리고 새로운 문서들(docs)과 함께 하는 Connect 2.0입니다.
HTTP and HTTPS
기존
connect.Server
는 노드의 코어인net.Server
를 상속했는데요, HTTP와 HTTPS를 모두 제공하기가 어려웠습니다. 이전에는 connect.createServer()였습니다만 이제 새로운 connect() 는 간단한 자바스크립트 함수입니다. 따라서 이젠 아래와 같은 식으로 app.listen()호출을 생략하고 app을 노드의 net.Server로 간단히 넘길 수 있습니다.Body parsers
bodyParser()미들웨어는 이제 단순히
json()
,multipart()
, 그리고urlencoded()
를 추가하는데 쓰는 축약표현에 불과합니다. 해당 함수들은 파싱된 값들을 req.body 에 담습니다. 그리고multipart()
는 업로드를 위해req.body``와 ``req.files
를 제공합니다.== bodyParser 소스코드 == exports = module.exports = function bodyParser(options){ var _urlencoded = urlencoded(options) , _multipart = multipart(options) , _json = json(options); return function bodyParser(req, res, next) { _json(req, res, function(err){ if (err) return next(err); _urlencoded(req, res, function(err){ if (err) return next(err); _multipart(req, res, next); }); }); } };
Core compression
Node 0.6.0에서 빠른 네이티브 압축능력들을 제공하는 관계로, 이제 우리도 gzip과 deflate를 지원하는
compress()
미들웨어를 갖게 되었습니다.Cookie parser
cookieParser() 미들웨어는 이제 싸인된 쿠키들(signed cookies)과
secret을
받아들입니다. 해당 기능은 session({ secret: string })을 session()미들웨어로 넘길 필요성을 교체하였습니다. 싸인된 쿠키들은 req.signedCookies를 통해서, 그리고 싸인되지 않은 쿠키들은 req.cookies를 통해 사용가능합니다.Error delegation
이전의 몇몇 코어 미들웨어는 에러 상황들에 직접 응답해야 했었습니다.. 해당 사항들은 단순히 next(err) 를 함게 쓰는 걸로 변경되었습니다. 이렇게 변경함으로써 에러 핸들링 미들웨어를 추가함으로써 커스터마이즈된 행동들을 지정하는 것이 가능해졌습니다.
Session
앞서 언급했던 것처럼 session()은 더이상 secret을 필요로 하지 않습니다. .maxAge 쿠키는 null이 기본값이었는데요, 브라우저 세션쿠키가 된다는 뜻이고요, 방문자가 브라우저를 닫으면 만료됩니다.
Third-party middleware
서드파티 미들웨어는 완벽하게 동작 합니다만 이번 Connect 릴리즈는 Express 2.x 와 호환되지 않습니다. 곧 Express 3.0 이 나올예정입니다.
Changelog
공개된 API에 영향을 주지않는 것들을 포함해서 다음과 같은 중요한 변경이 이루어졌습니다. 마찬가지로 Mocha를 사용해서 테스트를 다시 다 작성했습니다.
cookieSession()
미들웨어 추가compress()
미들웨어 추가middleware for gzip / deflate supportsession()
“proxy” 세팅 추가json()
미들웨어 추가urlencoded()
미들웨어 추가multipart()
미들웨어 추가cookieParser(secret)
지원. 이 미들웨어를 통하면 싸인된 쿠기에 접근할 수 있음res.headerSent
에res._headerSent
노드를 먼저 체크하는 것이 추가됨basicAuth()
는 req.remoteUser에서 req.user로 변경됨session()
기본값이 브라우저 세션 쿠키로 변경됨bodyParser()
가json()
,urlencoded()
,multipart()
를 이용함errorHandler()
는 이제부터는 개발시 모드 전용 미들웨어가 됨next()
를 이용해서 애플리케이션이 로깅과 핸들링을 단일화 할 수 있음http[s].Server
의 상속관계를 제거함. 이제부터는 그냥 함수니까 http, https 둘 다 제공하는 앱을 만드는게 더 쉬어짐.createServer()
제거됨 (connect()
사용하삼)session()
에서secret
옵션을 제거함 cookieParser(secret) 사용하삼connect.session.ignore
배열지원 제거router()
미들웨어 제거