我试图从一个表中查询,其中teacherId等于登录人员的teacherId,但不能将该teacherId从前端传递到后端。
这是后端
app.get("/api/get", async(req,res) => {
const teacherId = req.body.teacherId
connection.query(
"SELECT class FROM homework WHERE teacherID = ?",
[teacherId],
(err, result) => {
if (result){
res.send({ message: result })
} else{
console.log(err)
}
}
)
})这是前端
useEffect(() => {
Axios.get("http://localhost:1337/api/get", {
teacherId: teacherId
}).then((response) => {
if(response){
setDisplayHomework(response.data.message)
} else{
console.log("error")
}
})
})const teacherId = localStorage.getItem("teacherId")我想问题就在哪里,上面写着teacherId: teacherId,但我不知道为什么。
发布于 2021-12-16 21:38:30
你需要用
Axios.get("http://localhost:1337/api/get", {
params: { teacherId }
});并使用req.query.teacherId读取
如果您看到Axios.get签名,它是
axios.get(url,config)
与
axios.post(url[,data,config])
它将数据作为第二个参数传递。
这是因为服务器不使用GET请求中的主体。有关这方面的更多信息,请阅读HTTP GET with request body。
发布于 2021-12-16 21:42:01
通常,您不会发送带有get请求的主体。把老师的身份证放进网址。这就是所谓的路径变量。
app.use('/teacher/:teacherId', function(req, res, next) {
console.log(req.params.teacherId);
next();
})发布于 2021-12-16 21:42:11
与post请求不同,Get请求没有请求体,因此Axios.get函数不应该为主体设置第二个参数。相反,将参数作为url传递,如下所示:
useEffect(() => {
Axios.get("http://localhost:1337/api/get?teacherId="+teacherId).then((response) => {
if(response){
setDisplayHomework(response.data.message)
} else{
console.log("error")
}
})
})然后在后端代码中使用req.params访问get请求url参数:
app.get("/api/get", async(req,res) => {
const teacherId = req.params.teacherId
connection.query(
"SELECT class FROM homework WHERE teacherID = ?",
[teacherId],
(err, result) => {
if (result){
res.send({ message: result })
} else{
console.log(err)
}
}
)
})https://stackoverflow.com/questions/70385853
复制相似问题