如何从 Express 中的请求中获取数据
how to get the data from a request in Express
我想为我的网络应用程序构建一个登录页面,我想使用 fetch 将数据发送到我的快速服务器,但是当我将请求记录到控制台时,“req.body”甚至是一个空对象如果我发送了一个带有名称和密码属性的对象,谁能帮忙
client_side代码:
<!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>
server_side代码:
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() #because I rewrite the server code not paste it
尝试 app.post
而不是 app.get
。参见 https://expressjs.com/en/guide/routing.html
您的 javascript 正在执行 HTTP POST 请求,但 express 仅处理 HTTP GET 请求。
- 尝试安装使用
body-parser
- 将 app.get() 更改为 app.post()。但是如果你处理
/login
路径,使用 .put() 是正确的。
首先,将 app.get
更改为 app.post
以处理 post 请求。
其次,添加内置的 JSON 正文解析器以正确地将“正文” 属性 添加到请求对象中。 app.use(express.json())
要更稳健地处理身份验证,请使用 passportjs。
我想为我的网络应用程序构建一个登录页面,我想使用 fetch 将数据发送到我的快速服务器,但是当我将请求记录到控制台时,“req.body”甚至是一个空对象如果我发送了一个带有名称和密码属性的对象,谁能帮忙
client_side代码:
<!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>
server_side代码:
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() #because I rewrite the server code not paste it
尝试 app.post
而不是 app.get
。参见 https://expressjs.com/en/guide/routing.html
您的 javascript 正在执行 HTTP POST 请求,但 express 仅处理 HTTP GET 请求。
- 尝试安装使用
body-parser
- 将 app.get() 更改为 app.post()。但是如果你处理
/login
路径,使用 .put() 是正确的。
首先,将 app.get
更改为 app.post
以处理 post 请求。
其次,添加内置的 JSON 正文解析器以正确地将“正文” 属性 添加到请求对象中。 app.use(express.json())
要更稳健地处理身份验证,请使用 passportjs。