我有带有路由的Express方法(Express&Node),其中包含url参数,以及对该URL的客户端请求(反应),但是问题是服务器返回的参数不确定。这是代码:
服务器(index.js):
router.use('/api/recipe/:dishName/:id', require('./view-recipe'))
view-recipe.js:
router.get('/', (req, res) => {
const name = req.params.dishName;
const id = req.params.id;
console.log('name ' + name +' id ' + id)
})
和客户端(ReactJS):
componentDidMount(){
const { match: { params } } = this.props;
console.log(`/api/recipe/${params.dishName}/${params.id}`)
axios.get(`/api/recipe/${params.dishName}/${params.id}`)
.then(res => res.data)
.then(data =>{
console.log(data.recipe)
})
}
此代码返回未定义的名称:服务器端的名称和id,但是客户端sid变量(params.id和params.dishName)有效(我记录了该日志,并且有效)。顺便说一句,
未捕获(承诺)错误:请求失败,状态码为500
此错误显示在控制台中 有什么帮助吗?谢谢!
答案 0 :(得分:-1)
您应该执行以下操作:
var viewRecipe=require('./view-recipe')
router.use('/api/recipe/:dishName/:id',viewRecipe.get )
以及在view-recipe.js中:
module.exports={
get:function(req,res,next){
const name = req.params.dishName;
const id = req.params.id;
console.log('name ' + name +' id ' + id)
...rest of code
res.send('something')
}
}
这背后的基本原理是,您需要将路由器映射两次才能使用一种方法。