0
好這裏的情況,據我所知,有三種方法來創建Web應用程序我可以創建可用於提供HTML和REST API的路線嗎?
- 傳統的方式:從服務器渲染HTML頁面
- 不確定:創建一個API,讓用戶的瀏覽器下載 Javascript應用程序(Angular,React,Ember)獲得高分 交互式應用程序
- 未來:同構web應用程序,它將HTML與客戶端技術(Angular,React,Ember)一起從服務器。
由於更快的加載頁面,我打算使用第三種方式,但現在的問題是如果我要創建移動應用程序。
我的堆棧:Node.js的+陣營
讓我們說,如果我打算去移動,我需要重複同樣的路線和邏輯是什麼? 當前的問題
app.get('/users', function(req, res) {
res.render('index', { message: "Hey Im Jack" });
});
app.get('/api/users', function(req, res) {
res.json({ message: "Hey Im Jack" })
});
有沒有我可以用一個路線同時服務於HTML和REST什麼辦法?
謝謝你的回覆,第一位是移動有req.headers .accept.match()?和第二種解決方案,正則表達式可能是非常多餘的權利?因爲假設我有10條路線,並且都需要一些mongodb查詢,那麼是否需要創建另外10個附加中間件? –
'req.headers'是客戶端發出的[HTTP請求](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields)的一個屬性,所以它肯定會出現在所有客戶端。 ['.accept'實際上可能不是](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html),在這種情況下,你應該這樣'req.headers.accept && req.headers.accept .match(...'。 – laggingreflex
正則表達式路由的目的是爲中間件運行'/ users'或'/ api/users'。既然你說過,編寫大概運行相同查詢的代碼是多餘的對於這兩種情況,代碼可以在兩個中間件的兩個路由中運行,如果你有10條路由需要相同的** mongodb查詢,那麼你只需要1個這樣的中間件就可以了。所有不同的,需要不同的查詢代碼,然後是的,我沒有看到前面的中間件的目的, – laggingreflex