我的應用程序中有幾個「api」端點,前端框架使用它的AJAX進程。出於組織目的,我想重新使用這些端點的代碼來檢索服務器端呈現的數據,在某些情況下,我可以使用這些數據來與搜索引擎良好地配合。所以,理想情況下,我會實現某種HMVC設置,以簡單地訪問API端點上的路由。具體而言,我想在發佈頂級響應之前獲得響應並對其執行其他操作(例如,呈現帶有結果的視圖)。如何在Node/Express中實現HMVC結構
例如:
app.get('/post/recent', function(req, res) {
app.doRequest('/api/posts/', req, function(res2) {
var data = res2.body;
res.render('posts/index', data);
});
});
什麼是做到這一點的最好方法是什麼?
到目前爲止,我想出最好的辦法是:
揭露所有邏輯端點作爲一種方法,這將在app.get('...', myFunction)
使用,然後我其他地方打電話myFunction
快遞流程之外爲那條道路。 然而,,這不會給我一個可靠的方式來運行特定於端點的中間件(我也想運行在HMVC請求上),除非我編寫了我自己的中間件實現,它不依賴於express。 API端點具有中間件,它執行類似if(!hasAccess) res.send(403)
這樣的事情,我特別不希望發生在我的主要路由中,因爲我想渲染一個好的錯誤頁面,而不是僅發送錯誤代碼。
例子:
var getPosts = function(req) {
var deferred = q.defer()
doDatabaseQuery(req.query).then(function(response) {
deferred.resolve(response)
});
};
app.get('/api/posts', myMiddlewareFunction(), function(req, res) {
getPosts(req).then(function(response) {
res.send(response);
});
);
app.get('/post/recent', function(req, res) {
// I want to run middleware here, not in root level
getPosts(req).then(function(response) {
res.render('post/index', response);
}, function(err) {
res.render('error/noaccess');
});
});
更好的想法?有沒有辦法以編程方式訪問快速路線並獲得結果?
您應該更改答案不會是咖啡的腳本,或者原來的問題使用咖啡腳本。 – jemiloii