axios在第一次发布请求时返回404

4szc88ey  于 2022-11-05  发布在  iOS
关注(0)|答案(2)|浏览(189)
function verNotasAluno(e) {
        e.preventDefault()
        setMateria(String(responseProfessor[1]))
        axios
            .post(`http://localhost:3001/getNotasAluno/${materia}`, { lupaAluno })
            .then((response) => {
                if (response.data === 'Erro') {
                    alert('Aluno não encontrado')
                } else {
                    setNotasResponse(JSON.stringify(response.data))
                }
            })
    }

    return (
        <div>
            <form onSubmit={verNotasAluno}>
                <span>Nome:</span> <input type={'text'} onChange={(e) => { setLupaAluno(e.target.value) }} required /> <br />
                <br />
                <button>Buscar Nota</button>
            </form>
        </div>
    )

服务器端:

app.post('/getNotasAluno/:materia', (req, res) => {
        const nome = req.body.lupaAluno
        const materia = req.params.materia

        let searchquery = ''
        if (materia === 'Fisica') {
            searchquery = 'SELECT nota_fisica, nota_fisica2, nota_fisica3 FROM pessoas where nome = ?;'
        } else if (materia === 'Portugues') {
            searchquery = 'SELECT portugues, portugues2, portugues3 FROM pessoas where nome = ?;'
        } else if (materia === 'Matematica') {
            searchquery = 'SELECT matematica, matematica2, matematica3 FROM pessoas where nome = ?;'
        }
        db.query(searchquery, nome, (err, result) => {
            if (result.length === 0) {
                res.send('Erro')
            } else {
                res.send(result)
            }
        })
    })

正如我在标题中所说的,第一次请求提交表单时,会出现以下错误:Click to see the image error,但如果我在第一个请求之后再发出一个请求,它将正常工作
我是个初学者,谁能给我点提示吗?

r8uurelv

r8uurelv1#

我发现了什么地方出了问题,'materia'参数在服务器上是空的,这就是为什么第一个请求给了404。不得不使用UseEffect来更新useState之类的。感谢看到这段代码的人。

xtfmy6hx

xtfmy6hx2#

从您的错误图像,后请求需要materia作为slug,但您没有在第一个请求中发送它。
在您的第一次API调用中,您只是调用

http://localhost:3001/getNotasAluno/

相反,它应该是

http://localhost:3001/getNotasAluno/1

1是材料ID

相关问题