**
大多數情況下,渲染內容用 res.render,它最大程度地根據布局渲染檢視。
如果想寫乙個快速測試頁,也許會用到 res.send。
你可以使用 req.query 得到查詢字串的值,
使用req.session 得到會話值,
或使用req.cookie/req.singedcookies 得到 cookies 值。
到示例 6-8 演示了常見的內容渲染任務:
示例 6-1 基本用法
// 基本用法
res.render('about');
});
示例 6-2 200 以外的響應**
res.status(500);
res.render('error');
});// 或是一行……
res.status(500).render('error');
});
示例 6-3 將上下文傳遞給檢視,包括查詢字串、cookie 和 session 值
res.render('about', );
});
示例 6-4 沒有布局的檢視渲染
// 下面的 layout 沒有布局檔案,即 views/no-layout.handlebars
// 必須包含必要的 html
res.render('no-layout', );
});
示例 6-5 使用定製布局渲染檢視
// 使用布局檔案 views/layouts/custom.handlebars
請求和響應物件 | 57
res.render('custom-layout', );
});
示例 6-6 渲染純文字輸出
res.type('text/plain');
res.send('this is a test');
});
示例 6-7 新增錯誤處理程式
// 這應該出現在所有路由方法的結尾
// 需要注意的是,即使你不需要乙個 " 下一步 " 方法
// 它也必須包含,以便 express 將它識別為乙個錯誤處理程式
console.error(err.stack);
res.status(500).render('error');
});
示例 6-8 新增乙個 404 處理程式
// 這應該出現在所有路由方法的結尾
res.status(404).render('not-found');
});
6.11.2 處理表單
當你處理表單時,表單資訊一般在 req.body 中(或者偶爾在 req.query 中)。你可以使用
req.xhr 來判斷是 ajax 請求還是瀏覽請求(第 8 章將深入討論)。讓我們看看示例 6-9 和
示例 6-10。
示例 6-9 基本表單處理
// 必須引入中介軟體 body-parser
console.log('received contact from ' + req.body.name +
' <' + req.body.email + '>');
try ) :
res.redirect(303, '/thank-you');
} catch(ex) ) :
res.redirect(303, '/database-error');
}});6.11.3 提供乙個api
如果提供乙個類似於表單處理的 api,引數通常會在 req.query 中,雖然也可以使用 req.
body。與其他 api 不同,這種情況下通常會返回 json、xml 或純文字,而不是 html。
你會經常使用不太常見的 http 方法,比如 put、post 和 delete。提供 api 將在第 15 章
深入討論。示例 6-11 和示例 6-12 使用下面的「產品」陣列(通常是從資料庫中檢索):
var tours = [,,
];
「節點」一詞經常用於描述 api 中的單個方法。
示例 6-11 簡單的 get 節點,只返回 json 資料
res.json(tours);
});
示例 6-12 根據客戶端的首選項,使用 express 中的 res.format 方法對其響應。
示例 6-12 get 節點,返回 json、xml 或 text
var toursxml = '<?xml version="1.0"?>' +
products.map(function(p)).join('') + ''';
var tourstext = tours.map(function(p)).join('\n');
res.format(,
請求和響應物件 | 59
res.send(toursxml);
},'text/xml': function()
'text/plain': function()
});});
在示例 6-13 中,put 節點更新乙個產品資訊然後返回 json。引數在查詢字串中傳遞
(路由字串中的 『』:id』』 命令 express 在 req.params 中增加乙個 id 屬性)。
示例 6-13 用於更新的 put 節點
//api 用於更新一條資料並且返回 json;引數在查詢字串中傳遞
var p = tours.some(function(p));
if( p ) );
} else );
}});
最後,示例 6-14 展示了乙個 del 節點。
示例 6-14 用於刪除的 del 節點
// api 用於刪除乙個產品
api.del('/api/tour/:id', function(req, res));
} else );}
Node express 官方例子cors
最近學習node以及express,看例子看的頭疼,剛看完cors,寫一下記錄下來。以下是index.js var express require var logger require morgan var bodyparser require body parser var api express...
node express 搭建後台(一)
2.安裝express cnpm install g express 全域性安裝express generator npm install g express generator express4 命令工具 3.express e mytest 建立專案 e 啟用ejs模板 4.npm start ...
node express允許跨域
找了好幾個解決跨域的方法,對我的程式都是無效的。前台用 能解決,但是想試一下純後台解決跨域,試過下面的,能完美解決。自定義跨域中介軟體 varallowcors function req,res,next use allowcors 使用跨域中介軟體var createerror 用來設定模版引擎 ...