express框架怎么拿到get方法发送的数据
请问,node后端,我怎样才能获取get方法传过来的数据,用query的那种我懂,但我这是vue设置了代理,浏览器地址不会变。
app.js中的代码:
var loginRouter = require('./routes/login.js');
app.use('/api', loginRouter);
login.js中的代码
var express = require('express');
var router = express.Router();
// 登录,官网的写法,设置/:username,然后用params获取
router.get('/user/login/:username', userController.login);
module.exports = router;
useController.js中的代码
module.exports = {
login: function (req, res) {
var data = {'name':'Alis'};
// 传统get方法,地址上有参数,无误
// console.log(req.query.username);
// 使用了代理时,浏览器地址上无参数
console.log('username=' + req.params.username); // 输出undefined
res.json(data);// 直接返回json
}
}
前端vue的代码,
submit: function () {
this.$http.get('/api/user/login', {
username: this.user.username,
password: this.user.password
}).then(response => {
console.log('response.name=' + response.data.name)
if (response.data.code === 0) {
console.log('error in response')
}
console.log('response=' + JSON.stringify(response))
console.log('response.status=' + response.status)
}).catch(error => {
console.log(error.message)
})
}
}
前后端都是没问题的,已经测试过可以正常访问,就是后端路径上加上/:username后访问就不行了,提示404。不加可以访问到但是也拿不到username的值。
vue的代理,也是没问题的,都测试过了:
// 设置地址映射表
proxyTable: {
'/api': {
target: 'http://127.0.0.1:3000', // 即将访问的目标地址
changeOrigin: true,
/*pathRewrite: {
'^/api': '' // 将目标地址用这个代替
}*/
}
}
这个方法是官网说的,可我这样也不行,请问该怎么拿到数据呢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我知道问题在哪里了,对于get方法,前端发过来的数据一般都是用req.query获取,但是如果请求投地址上有一些指定的参数,比如/api/user/id=001这种,需要获取到这个id的值就不能用query方法,要用params方法。因为axios的get方法有两种发送数据的方式,其中一个是axios.get('/api/user/login',{ params:{username:111}},function(){...})这种,这个params让我误以为是后端node要通过params属性获取数值,但其实传输过去仍然是用query获取的。
?号后面的参数通过req.query获取
/:id 路径上面的参数通过req.param获取
body里面的参数,解析之后 req.body获取