nodejs-koa app詳解

app.listen(...)

Koa 應用並不是是一個 1-to-1 表徵關係的 HTTP 服務器。 一個或多個Koa應用能夠被掛載到一塊兒組成一個包含單一 HTTP 服務器的大型應用羣。html

以下爲一個綁定3000端口的簡單 Koa 應用,其建立並返回了一個 HTTP 服務器,爲Server#listen() 傳遞指定參數(參數的詳細文檔請查看nodejs.org)。node

var koa = require('koa');
var app = koa();
app.listen(3000);

app.listen(...) 其實是如下代碼的語法糖:git

var http = require('http');
var koa = require('koa');
var app = koa();
http.createServer(app.callback()).listen(3000);

這意味着您能夠同時支持 HTTPS 和 HTTPS,或者在多個端口監聽同一個應用。github

var http = require('http');
var koa = require('koa');
var app = koa();
http.createServer(app.callback()).listen(3000);
http.createServer(app.callback()).listen(3001);

app.callback()

返回一個適合 http.createServer() 方法的回調函數用來處理請求。 您也可使用這個回調函數將您的app掛載在 Connect/Express 應用上。api

app.use(function)

爲應用添加指定的中間件,詳情請看 Middleware服務器

app.keys=

設置簽名Cookie密鑰,該密鑰會被傳遞給 KeyGripcookie

固然,您也能夠本身生成 KeyGrip 實例:app

app.keys = ['im a newer secret', 'i like turtle'];
app.keys = new KeyGrip(['im a newer secret', 'i like turtle'], 'sha256');

在進行cookie簽名時,只有設置 signed 爲 true 的時候,纔會使用密鑰進行加密:koa

this.cookies.set('name', 'tobi', { signed: true });

錯誤處理

默認狀況下Koa會將全部錯誤信息輸出到 stderr,除非 NODE_ENV 是 "test"。爲了實現自定義錯誤處理邏輯(好比 centralized logging),您能夠添加 "error" 事件監聽器。socket

app.on('error', function(err){
  log.error('server error', err);
});

若是錯誤發生在 請求/響應 環節,而且其不可以響應客戶端時,Contenxt 實例也會被傳遞到 error 事件監聽器的回調函數裏。

app.on('error', function(err, ctx){
  log.error('server error', err, ctx);
});

當發生錯誤但仍可以響應客戶端時(好比沒有數據寫到socket中),Koa會返回一個500錯誤(Internal Server Error)。

不管哪一種狀況,Koa都會生成一個應用級別的錯誤信息,以便實現日誌記錄等目的。

相關文章
相關標籤/搜索