文章出處
文章列表
在Node.js里,你可以控制請求和響應,自己可以定義自己的響應方式,如對文本如何響應,對json如何響應,對圖像流如何響應等等,而這些在Sails架構里,變得更加容易和清晰了,它位于項目的api/responses目錄下,你可以定義自己的響應體。
其實sails為我們封裝了一些標準的相應,如view方法,這也就是一種響應體,它可以將文本,json對象渲染到指定的視圖上,而我們自己可以效仿它,實現自己的響應體,下面代碼是官方給出的一個實例,它的方法名為myResponse,這是sails架構一個定義類模塊的方式,即JS文件名不是你的類名,我們在程序里可以通過res.myResponse("你的響應內容")去調用它,具體代碼如下
/** * api/responses/myResponse.js * * This will be available in controllers as res.myResponse('foo'); */ module.exports = function(message) { var req = this.req; var res = this.res; var viewFilePath = 'mySpecialView'; var statusCode = 200; var result = { status: statusCode }; // Optional message if (message) { result.message = message; } // If the user-agent wants a JSON response, send json if (req.wantsJSON) { return res.json(result, result.status); } // Set status code and view locals res.status(result.status); for (var key in result) { res.locals[key] = result[key]; } // And render view res.render(viewFilePath, result, function (err) { // If the view doesn't exist, or an error occured, send json if (err) { return res.json(result, result.status); } // Otherwise, serve the `views/mySpecialView.*` page res.render(viewFilePath); }); };
它實現了普通文件和json對象的兩種響應方式,我們在代碼里調用它和view類是一樣的
module.exports={ index: function (req, res){ return res.view({title:"大叔",engTitle:"Lind"}); //return res.view("view_name",data)//view_name參數為空表示用當前的action }, err:function(req,res){ return res.myResponse({errCode:0,error:"產生錯誤"}); } };
通過執行http://localhost:1337/test/err得到下面的結果
上面的功能類似于c# mvc里的重寫ViewResult,都是對輸出響應流進行控制的。
文章列表
全站熱搜