Axios GET路由404-ing,Node.js / Express

时间:2018-02-28 08:42:46

标签: javascript node.js express axios

我在函数中有以下简单的GET。

axios
     .get(`/api/search/q=${this.value}`)
     .then(res => {
            console.log(res.data);
        }); 

如果我输入查询(在这种情况下为字母“a”),则为GET 404:

GET http://localhost:7777/api/search/q=a 404 (Not Found)

所以,当然我从.then获得了一个未捕获的承诺错误:

 Uncaught (in promise) Error: Request failed with status code 404

我认为它必须是一个简单的路由问题,但我的明确路线是:

router.get('/api/search', someController.someFunction)

控制器中的功能工作(即响应数据),因为我在应用程序的其他地方使用它,所以我觉得我已经缩小到axios GET没有找到api。但我无法弄清楚为什么,因为这条道路对我来说还不错。

1 个答案:

答案 0 :(得分:0)

你得到404因为节点只期待 / api / search ,但你尝试的 / api / search /:q 完全不同,试试

  axios.get('/api/search/', {
    params: {
      q: value
    }
  })
  .then(function (response) {
      console.log(response);
  })
  .catch(function (error) {
      console.log(error);
  });

因为添加的任何数量的参数都不会使URL笨拙,而是

的替代
axios.get('/api/search?q=${this.value}'). 

并在服务器上

router.get('/api/search', someController.someFunction)

并在您的控制器中

if(req.query.hasOwnProperty('q')){
    var q = req.query.q;
}