javascript – express.Router()与app.get

前端之家收集整理的这篇文章主要介绍了javascript – express.Router()与app.get前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为Node.js使用Express 4服务器

像这样有一个路由器加入Express:

in app.js

var router = express.Router();
    app.use(router);
    app.use('/users',usersRoutes);

in userRoutes.js:

var router = express.Router();

router.get('/',function (req,res,next) {

}

router.get('/:user_id',next) {

}

router.post('/:user_id',next) {

}

router.put('/:user_id',next) {

}

router.delete('/:user_id',next) {

}

module.exports = router;

但我发现很难在网上找到这种类型路由器的任何可靠文档.有很多关于使用app.get,app.post,app.put,app.delete等旧样式的文档.更令人困惑的事情之一是第一个参数(路径路径)似乎需要我们作为程序员从router.get / post / put / delete方法删除app.use参数.

例如:

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

…这意味着usersRoutes中的所有路由已经在路径的开头有一个不可见的’/ users’ – 我不确定我还喜欢什么.
这意味着在usersRoutes.js中:

var router = express.Router();

 router.get('/users/:user_id',next) {  //WRONG!!

    }

 router.get('/:user_id',next) {  //RIGHT

    }

这有点令人困惑,但也许我可以通过更长的路径欣赏.

鉴于缺少此express.Router的文档 – 我认为这不是首选的方式 – 但是可以使用express.Router创建一个可靠的RESTful后端 – 并且它是否附加了所有基本的HTTP谓词?

另一个令人困惑的事情是—->在app.js中我们有一个路由器app.use(express.Router())的实例 – 这个路由器实例如何与其他实例交互?面对它没什么意义.

解决方法

正如Bidhan A的答案所述,这是使用Express执行此操作的首选方法,因此从Express 4开始就是这样.

您可以完全调整代码和逻辑.

例如,您可以使用以下代码获得routes / APIRouter.js文件

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);

你也可以使用/controllers/reportsController.js,最后在主文件app.js或者命名为server.js:

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

所以,回答你的问题:

>是的,这是首选,并以某种方式正式的方式来做到这一点.
>是的,您通过使用路由器来控制整个HTTP,您应该使用另一个基于快速的模块,如:body-parser,error-handler或cookie-parser,以便完成该控制.

注意:这假设您已经知道首选的常规Web框架目录结构并执行模块导出.

原文链接:https://www.f2er.com/js/155781.html

猜你在找的JavaScript相关文章