2017-06-14 40 views
0

我有站點存根,其中路由設置在2個地方。如何在Express中設置路線? app.use()vs app.get()

首先在app.js

... 
var index = require('./routes/index'); 
var users = require('./routes/users'); 
... 
app.use(express.static(path.join(__dirname, 'public'))); 

app.use('/', index); 
app.use('/users', users); 
... 

東西被設定爲use。接下來裏面提到的腳本,像index.js

var express = require('express'); 
var router = express.Router(); 

var fs = require('fs'); 
var path = require('path'); 
var config = require('../config'); 

/* GET home page. */ 
router.get('/', function(req, res) { 

    var data = {}; 
    ... 

假設我希望用infromation從Express Routing文檔。我應該在哪裏放置路線,例如/users/:userId/books/:bookId

在文檔中,get針對app被調用,而在我的存根中,get針對router以兩步方式調用。

哪裏掛?

回答

2

在文檔get被稱爲對app,因爲他們設置他們的端點app.js文件。在您的index.js中,您從文件module.exports = router;(這是應用的路由器)返回路由器。現在在您的app.js文件中說

app.use('/', index); 
app.use('/users', users); 

這些是路線。您在說index文件中的所有端點都以/開頭,users文件中的端點以/users開頭。

所以路線/users/:userId/books/:bookId必須在users.js文件中像這樣

router.get('/:userId/books/:bookId', function(req, res, next) { 
    // do something 
}); 
1

如果您想處理此路線 - /users/:userId/books/:bookId,那麼您需要在routes/users.js文件中編寫以下處理程序。

router.get('/:userId/books/:bookId', function(req, res) { 
    var data = {}; 
});//get route 

基本上,在app.js中,您基於第一部分對url進行了分類,例如, users。因此,所有以/users開頭的路線將由您的routes/users.js課程處理。其他所有航線將由routes/index.js處理,因爲這被定義爲處理/(有沒有/用戶/管理員等,以便不被users.js處理所有路由可以在此辦理。)

而且,這些路由處理程序文件,您定義一個router對象,將所有路由處理程序添加到它並將其導出到底部。所以,當你在這些文件,你需要使用routerapp.js你可以直接使用app.get()

相關問題