首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将变量传递给get请求

如何将变量传递给get请求
EN

Stack Overflow用户
提问于 2021-12-16 21:30:41
回答 3查看 1.6K关注 0票数 3

我试图从一个表中查询,其中teacherId等于登录人员的teacherId,但不能将该teacherId从前端传递到后端。

这是后端

代码语言:javascript
复制
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)
            }
        }
    )
})

这是前端

代码语言:javascript
复制
 useEffect(() => {
        Axios.get("http://localhost:1337/api/get", {
            teacherId: teacherId
        }).then((response) => {
            if(response){
                setDisplayHomework(response.data.message)
            } else{
                console.log("error")
            }
        })
    })
代码语言:javascript
复制
const teacherId = localStorage.getItem("teacherId")

我想问题就在哪里,上面写着teacherId: teacherId,但我不知道为什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-12-16 21:38:30

你需要用

代码语言:javascript
复制
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

票数 3
EN

Stack Overflow用户

发布于 2021-12-16 21:42:01

通常,您不会发送带有get请求的主体。把老师的身份证放进网址。这就是所谓的路径变量。

代码语言:javascript
复制
app.use('/teacher/:teacherId', function(req, res, next) {
  console.log(req.params.teacherId);
  next();
})
票数 0
EN

Stack Overflow用户

发布于 2021-12-16 21:42:11

与post请求不同,Get请求没有请求体,因此Axios.get函数不应该为主体设置第二个参数。相反,将参数作为url传递,如下所示:

代码语言:javascript
复制
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参数:

代码语言:javascript
复制
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)
            }
        }
    )
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70385853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档