【问题标题】:how to get the data from a request in Express如何从 Express 中的请求中获取数据
【发布时间】:2021-10-07 19:11:59
【问题描述】:

我想为我的 Web 应用程序构建一个登录页面,并且我想使用 fetch 将数据发送到我的 express 服务器,但是当我将 req 记录到控制台时,即使我发送了一个“req.body”也是一个空对象任何人都可以帮助具有名称和密码属性的对象

客户端代码:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="text" id="name" name="name" />
<input type="password" id="password" name="password" />
<button onclick="send()">login</button>
<script>
    async function send() {
        let name = document.getElementById('name').value
        let password = 
    document.getElementById('password').value

        let res = await 
 fetch('http://localhost:3000/api/login', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify({
                name,
                password                    
            })
        })
        if(res.redirected) {
            window.location.href = "/chat"
            localStorage.setItem('name', name)
            localStorage.setItem('password', password)
        } else {
            alert('not correct :P')
        }
    }
    </script>
   </body>          
   </html>   

服务器端代码:

app.use(express.urlencoded({ extended: true })); 

app.post('/api/login', (req, res) => {
  console.log(req.body)
  // why the output is an empty object {}
  res.redirect('/login')
})

我是前端开发人员,对后端不熟悉 #edit: 我的服务器代码是 app.post() 但我不小心放了 app.get() #因为我重写了服务器代码而不是粘贴它

【问题讨论】:

    标签: javascript node.js express backend


    【解决方案1】:

    首先,将app.get改为app.post来处理post请求。

    其次,添加内置的 JSON 正文解析器,以便将“body”属性正确添加到请求对象中。 app.use(express.json())

    要更稳健地处理身份验证,请使用 passportjs。

    【讨论】:

    • 我的服务器代码是app.post()但我不小心把app.get() #因为我重写了服务器代码没有粘贴它
    【解决方案2】:

    尝试使用app.post 而不是app.get。见https://expressjs.com/en/guide/routing.html

    您的 javascript 正在执行 HTTP POST 请求,但 express 仅处理 HTTP GET 请求。

    【讨论】:

    • 我的服务器代码是app.post()但我不小心把app.get() #因为我重写了服务器代码没有粘贴它
    【解决方案3】:
    1. 尝试安装使用body-parser
    2. 将 app.get() 更改为 app.post()。但是,如果您处理/login 路径,则使用 .put() 是正确的。

    【讨论】:

    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多