express.Router() vs. app.get

后端 未结 4 2054
走了就别回头了
走了就别回头了 2020-12-31 10:22

I am using Express 4 server for Node.js

There is a router baked into Express like so:

in app.js

    var router =         


        
4条回答
  •  不思量自难忘°
    2020-12-31 11:03

    As Bidhan A's answer states, this is preferred way to do it with Express and looks like that since Express 4.

    You can completly modulate your code and logic.

    For example you can have a routes/APIRouter.js file with this code:

    var apiRouter = express.Router();
    
    apiRouter.get('/reports', controllers.getReports);
    apiRouter.get('/reports/:id', controllers.getReport);
    apiRouter.post('/reports', controllers.createReport);
    apiRouter.put('/reports/:id', controllers.updateReport);
    apiRouter.delete('/reports/:id', controllers.deleteReport);
    

    Also you could have /controllers/reportsController.js and finally at your main file app.js or also named server.js get:

    var express = require('express');
    var app = new express();
    var apiRouter = require('./routes/APIRouter');
    app.use('/api',apiRouter);
    

    So, answering your question:

    1. Yes this is preferred and somehow official way to do it.
    2. Yes, you got whole HTTP to control by using Router and you should use another express based modules like: body-parser, error-handler or cookie-parser in order to complete that control.

    Note: this assumes you already know a preferred general web framework directory structure and do module exports.

提交回复
热议问题