少し前、つまり2011年10月5日、connect 2.0フレームワークの新しいバージョンがリリースされました。 ハブでギャップが認識され、数時間の空き時間が出ました。 2月29日にリリースされたバージョン2.0.1についてすぐに書きます。 2番目のバージョンでは、非常に必要で待望の変更が数多く行われました。
1つのサーバーアプリケーションのHTTPおよびHTTPS!
Connect.Serverは、以前NodeJSコアからnet.Serverから継承されていたため、HTTPアプリケーションとHTTPSアプリケーションの両方を作成するのに不便がありました。 その結果、connect()(以前はconnect.createServer())は、より汎用的な新しい関数になりました。 つまり、app.listen()の呼び出しをスキップできますが、アプリケーションでNodeJSのnet.Serverを使用するだけです。次に例を示します。
var connect = require('connect'), http = require('http'), https = require('https'); tlsOptions = { key: fs.readFileSync('keys/key.pem'), cert: fs.readFileSync('keys/cert.pem') }; var app = connect() .use(function(req, res) { res.end('hello habrahabr\n'); }) http.createServer(app).listen(80); https.createServer(tlsOptions, app).listen(443);
クエリパーサーの改善
bodyParser()に加えて、着信リクエストを処理するための新しい関数が追加されました:json()アプリケーション/ jsonリクエスト、multipart()マルチパート/フォームデータリクエスト、およびurlencoded()アプリケーション/ x-www-form-urlencodedリクエスト これらはすべて、req.bodyのクエリで送信されたデータにアクセスするための新しい機会を表し、multipart()関数は、req.bodyだけでなく、ダウンロードされたファイルのreq.filesの送信されたパラメーターへのアクセスを提供します。
パーサーを個別に接続できます。
app.use(connect.json()); app.use(connect.urlencoded()); app.use(connect.multipart());
これは次の記述と同等です。
app.use(connect.bodyParser());
カーネルレベルのデフレートとgzipのサポート
Nodeバージョン0.6.0以降、圧縮(zlib.createGzipおよびzlib.createDeflate)をネイティブで使用できるようになったため、それらをサポートするために接続するためにcompress()が追加されました。 アドオンには、ネイティブ機能に渡される圧縮設定があります。
Cookie Parser
cookieParser()を補完する署名が利用可能になりました。 以前は、セッション({secret:string})およびセッション()拡張自体を使用する必要がありました。 これで、req.signedCookiesプロパティを使用して署名付きCookieとセッションを操作したり、req.cookiesプロパティを使用して署名なしCookieを操作したりできます。
connect() .use(connect.cookieParser('keyboard cat')) .use(function(req, res, next){ res.end(JSON.stringify(req.cookies)); })
エラー処理
以前は、エラー処理が問題でした。 すべてのエラーは、connect()自体のerrorHandler()によってキャッチされ、標準ページを発行しました。 これで、コード内で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 } });
セッション
すでに述べたように、セッション()はシークレットを必要としません。 Cookieの場合、デフォルトでは.maxAgeプロパティはnullでした。つまり、ブラウザーを閉じると、設定されたすべてのCookieが削除されました。
サイド追加
接続するすべてのアドオン()は引き続き機能する必要があります。 それはすべてExpress 2.0と互換性がなく、Express 3.0が登場することを期待しています!
すべての変更のリスト
説明されている重要な変更、およびAPIに影響を与えない他のいくつかの変更が行われました。 すべてのテストはMochaを使用して実施されました。
2.0.1 / 2012-02-29
- vhost()アドオンのテストカバレッジを追加
- SHA-2を使用するためのcookieサポートのcookieParser()署名を変更しました[senotrusov]
- 静的()範囲の修正 :不可能な場合の416での応答
- vhost()の追加を修正 。 閉じる#494
2.0.0 / 2011-10-05
- cookieSession()cookie-onlyアドオンを追加しました
- gzip / deflateサポート用のcompress()アドオンを追加
- X-Forwarded-Protoをチェックするためのセッション()「プロキシ」設定を追加
- 「application / json」をサポートするjson()アドオンを追加しました
- 「application / x-www-form-urlencoded」をサポートするurlencoded()アドオンを追加しました
- 「multipart / form-data」をサポートするmultipart()アドオンを追加しました
- 署名済みCookieへのCookieParser(シークレット)アクセスを追加
- cookieParser()にCookie署名のサポートを追加しました
- cookieParser()のCookieのJSONシリアル化のサポートを追加しました
- Connectにデフォルトでerr.statusサポートを追加
- XキャッシュMISS / HITをstaticCache()に追加しました
- ノードが実行するまで、res._headerSentをチェックするパブリックres.headerSentを追加しました
- basicAuth()req.remoteUserをreq.userに変更しました
- ブラウザセッションCookieのデフォルトセッション()を変更しました 。 #475を閉じます
- 小文字のCookie名は変更されなくなりました
- bodyParser()がjson()、urlencoded()およびmultipart()を使用するように変更
- ErrorHandler()変更されたオーバーライドオプション(開発中)
- next()の使用を変更してエラーをインターセプトし、さらに処理するためのオプションを追加
- 1つのアプリケーションでhttpとhttpsを作成できるように、http [s] .Serverの継承を削除しました
- .createServer()を削除 (connect()を使用)
- セッション()のシークレットプロパティを削除し 、cookieParser(シークレット)を使用
- connect.session.ignore配列のサポートを削除
- router()アドオンを削除しました。 クローズ#262
- セッションごとに1回だけset-cookieを修正
- FQDNサポートを修正しました 。 「/」は追加しません
- XSS中の404を修正しました 。 #473を閉じます
- 404および500で生成されたConnectのHEADサポートを修正
エクスプレス3を待っています!
ソースとリンク:
TJ Holowaychukブログエントリ
接続ページ
Github接続