我在app.js增加了多个路由转发的配置,代码如下: //增加路由请求转发配置 app.use(’/’,routes); app.use(’/login’, routes); app.use(’/logout’, routes); app.use(’/dsg’,routes); app.use(’/userManage’,userManage); 其中userManage的代码如下: /**
- 用户管理路由配置
- @type {*|exports} */ var express = require(‘express’); var router = express.Router(); var request = require(‘request’); router.post(’/userManage’,function(req,res){ console.log(‘remote server!’); res.sendFile(path.join(__dirname,"…/views",‘login.html’)); });
module.exports = router; 接下来我在界面发起请求,代码如下: Ext.Ajax.request({ url: ‘/userManage’, method : ‘post’, params: { username: username, password: password }, 可是nodejs控制台确一直报错,错误信息如下:
我在想会不是是你写的请求路径不对,所以在控制台会报404,你在ajax里面写的请求url是“/userManage”,而userManage里面写的“router.post(’/userManage”对应的请求路径应该是“/userManage/userManage”,因为你在app.js里面用了“app.use(’/userManage’,userManage);” 不知道是不是这个原因
顺着LZ的问题,我想请教一下,如果这样:
app.use(’/’,routes1);
app.use(’/login’, routes2);
当访问地址为:localhost:3000/login/ 的时候,routes1会不会进?还是只进routes2?
@echoloyuk 会进routers1的, express匹配请求是具有优先级的,会根据你写的“app.use(’/’,routes1);”来确定优先级;也就是说“/login/login”会先去routers1里面找“/login/login”,如果没有,再去routers2里面找“/login”,如果routers1里面有“/login/login”则会忽略routers2里面的“/login”。当然,你如果需要routers1和routers2都响应到这个请求的话,那么,用“next()”。