Javascript GET请求在前端多次失败,但在后端未失败
我正在进行一个个人项目,该项目将允许用户根据他们对该类型的偏好来查找新书。我使用的数据库是MongoDB。然而,虽然我可以使用Postman在后端获取所有数据,但我无法在前端正确显示这些数据。目前,我只是尝试将数据发送到前端,至少是console.log'd,但还没有做到这一点 这是routes文件中的代码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
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