【问题标题】:Axios GET route 404-ing, Node.js/ExpressAxios GET 路由 404-ing,Node.js/Express
【发布时间】:2018-02-28 08:42:46
【问题描述】:

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

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

如果我输入查询,则 GET 404(在本例中为字母“a”):

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

所以,我当然会从 .then: 中得到一个 Uncaught promise 错误:

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

我认为这一定是一个简单的路由问题,但我的快速路由是:

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

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

【问题讨论】:

  • 不应该是/api/search?q=a吗?
  • 如果你要传递一个查询字符串,那么url应该是api/search?q=value,如果是一个URL参数,那么api/search/:q

标签: javascript node.js express axios


【解决方案1】:

您获得 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2018-01-20
    • 2015-01-11
    相关资源
    最近更新 更多