1.axios交互过程中报错Failed to load resource: the server responded with a status of
500 (Bad Request)
在解决这个问题的过程中检查了好几遍代码,也做了不少改动,但是仍然报错,而且是404和500轮流报错,刚开始以为是不是接口出问题了,但是在swagger里试了试接口,发现接口可以使用,所以应该就是在使用url的时候路径引错了。这次我们是在router里用了home和admin两个文件,home里写前台的router代码,adimn里写后台的router代码,然后再在两个文件里细分,把不同的代码根据功能以及对应的HTML文件的不同写进不同的子文件里,所以导致路径比较复杂,就以我写的register的代码为例,我把它的router文件写进了home的子文件register.js里,在register.js里写的时候,url仍然使用接口的url就可以,就像
const { Router } = require('express')
const express = require('express')
//路由容器
const register = express.Router()
const axios = require('axios')
register.get('/email/sendEmail', (req, res) => {
let {email}=req.query
axios({
method:'post',
url : '/email/sendEmail',
params:{
email:email
}
}).then(function(data){
res.status(200).json({
data:data.data,
code:0
})
}).catch(function(err){
res.status(500).json({
msg:err
})
})
})
在这里的url仍为/email/sendEmail,但是在HTML直接对应的js里,url就要写成/home/register/email/sendEmail,因为此处是引用的是router里面的接口,再由router里的接口引用后端给的接口,所以当文件里的js使用接口的时候,url需要加上前面的/home/register
2.Cannot destructure property 'mail' of 'req.query.mail' as it is undefined.
这是我在写一个post请求的时候遇到的问题,当时很纳闷,感觉代码没什么错误,但是还是报错了,而且又是这种我看不懂的错误,当我照着上面的代码再对照着敲一遍,格式上和那个基本上一样的时候,仍然会报错,在我多次使用了console.log打印相关信息后才发现,req.query里面什么也没有,在网上查阅相关资料,明白了req.query和req.body的区别,前者用于获取get方法传递的参数,后者用于获取post方法传递的参数,因为我这次用的是post方法,所以应当使用后者,即req.body.mail。