2014-11-20 55 views
1

我想知道是否使用相同的URL來提供HTML和JSON響應是一種很好的做法。HTML和JSON響應的相同URL

例如,如果我正在構建一個博客,並且我有一個提供最新項目的URL,那麼我將擁有一個類似於/ latest的網址 我希望對我的端點使用相同的URL來檢索項目我在我的節點執行以下路線:

app.get("/latest",function(req,res){ 
    var type = req.header("Accept"); 
    if(type.indexOf("application/json") > -1){ 
     getLatestItems(req,res); 
    } 
    else { 
     res.render("/latest", {user: req.session.username, current: "latest"}); 
    } 

}); 

我在想,如果這種做法是OK或者是它更好地爲我的JSON響應一組獨立的端點?

+0

'Accept'標題可以包含多個MIME類型,如果你想這樣做,你應該做的就是檢查'q'(質量)值。在這樣做之後,你仍然需要注意代理緩存請求並將其提供給不同客戶端的問題,因此您必須指定何時可以使用緩存副本以及何時不使用緩存副本等。 – CBroe 2014-11-20 22:36:56

+0

我認爲它對於像普通的「瀏覽器」這樣的不可預知的客戶端部分地服務的服務並不是一個好主意 - 如果這是一個API,您可以在請求客戶端上施加非常特定的規則,那將是不同的。 – CBroe 2014-11-20 22:38:36

回答

1

我會爲您的支持API創建一個單獨的URL模式。

所以在Angular中,您仍然可以使用URL路由/latest,但是您將通過URL(如/api/latest)提供JSON數據。

這將創建更少的混淆,並且還允許您輕鬆地將API與其他內容集成,因爲它只會返回JSON。