Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GET请求在前端多次失败,但在后端未失败_Javascript_Node.js_Vue.js_Axios - Fatal编程技术网

Javascript GET请求在前端多次失败,但在后端未失败

Javascript GET请求在前端多次失败,但在后端未失败,javascript,node.js,vue.js,axios,Javascript,Node.js,Vue.js,Axios,我正在进行一个个人项目,该项目将允许用户根据他们对该类型的偏好来查找新书。我使用的数据库是MongoDB。然而,虽然我可以使用Postman在后端获取所有数据,但我无法在前端正确显示这些数据。目前,我只是尝试将数据发送到前端,至少是console.log'd,但还没有做到这一点 这是routes文件中的代码 router.get('/books/:genre', bookBuilder.get_some_books) 以下是routes文件指向并正在工作的后端代码: exports.get

我正在进行一个个人项目,该项目将允许用户根据他们对该类型的偏好来查找新书。我使用的数据库是MongoDB。然而,虽然我可以使用Postman在后端获取所有数据,但我无法在前端正确显示这些数据。目前,我只是尝试将数据发送到前端,至少是console.log'd,但还没有做到这一点

这是routes文件中的代码

  router.get('/books/:genre', bookBuilder.get_some_books)
以下是routes文件指向并正在工作的后端代码:

exports.get_some_books = async function (req, res) {
  let { genre } = req.params;
  try {
    let books = await Book.find({"genre": genre});
    if (books) {
      res.json(books)
    } else {
      res.status(404).send({error: 'Not Found'});
    }
  } catch (err) {
    res.status(500).send({error: err.message});
  }
}
这是我在前端的代码,它不工作

    async getEverything() {
      try {
        let pbBooks = await axios.get(`/books/`, {
          method: 'GET',
          headers: {'Content-Type': 'application/json'},
          params: {
            genre: 'PB'
          }
        })
        if (pbBooks) {
          console.log(pbBooks)
        } else {
          this.$router.push('/Error');
        }
      } catch (err) {
        console.log(`Network error: ${err.message}`)
      }
    }
我的代码栈是Vue.js、Express.js、Node.js和Axios。在前端,我尝试将axios.get()的内部代码放入“/books/PB”中,然后尝试使用
/books/${genre}
获取所有内容(流派),但两种方法都不起作用

我得到的错误是一个404请求失败错误,它来自getEverything()函数中的catch块。我不知道为什么前端不能在后端正常工作的情况下获取数据。有什么我做错了吗?

改变

let pbBooks = await axios.get(`/books/`, {
...

let genre=“PB”
让pbBooks=wait axios.get(`/books/${genre}`{
方法:“GET”,
标题:{'Content-Type':'application/json'}
})
原因是配置对象的params部分被转换为查询字符串(
/books?genre=PB
),而不是
/books/PB,这是后端所期望的


更多信息:

404
是未找到
的HTTP状态码,这意味着
/books
在本地主机上没有路由设置。实际上,
/books
将路由到您的应用程序,而不是后端(除非您的应用程序服务器上有一个重定向到后端的代理设置)


如果涉及代理,则可能是配置错误。否则,Axios请求中的目标URL应该是
/books
(例如
http://localhost:9999/books
后台在端口9999本地运行,应用程序在其他端口上运行)。

Axios会自动附加
params
选项作为
GET
请求的查询参数,所以你的建议相当于OP的第一次尝试。另外,OP已经声明他们已经尝试过这个替代方案。你对后端的看法是正确的!我需要相应地更改axios请求中的URL