在没有 body-parser 的情况下访问 express 中的 req.body 个值
accessing req.body values in express without body-parser
我正在尝试使用我的应用程序设置一个简单的 google 登录服务。
我重新创建了一个简化版本的登录方案。
在由 google 编辑的 id_token
return 上使用 console.log()
时,我得到了例外的令牌。在登录文件中,我使用 xhr.send(JSON.stringify({ token: id_token }));
将令牌发送回后端。
Express 应用看起来像这样:
console.clear()
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = process.env.PORT || 3000
app.set('view engine', 'ejs')
app.use(express.json())
app.use(express.urlencoded({extended: true}))
app.post('/login', (req, res) =>{
console.log(req.body)
console.log(req.body.token)
})
app.listen(port, ()=>{
console.log(`Server running on http://localhost:${port}`)
})
为什么 console.log(req.body)
return 是正确的 json 对象而 console.log(req.body.token)
return 未定义?到目前为止,不幸的是我只在使用 bodyParser 时找到了方法。
响应req.body
:
{ '{"token":"eyJ...c9g"}': ''}
编辑:
正如 Mohamed 所建议的(标记答案),我最终编辑了正文本身:
xhr.send('idtoken=' + id_token);
允许我使用 console.log(req.body.idtoken)
body-parser 与 express.json 相同,您可以在此处看到 https://github.com/expressjs/express/blob/master/lib/express.js
您的 req.body 有一个嵌套对象作为键,其中的值为空字符串
JSON 对象本身
{ '{"token":"eyJ...c9g"}': ''}
这部分是一个键,它的值是一个空字符串
'{"token":"eyJ...c9g"}'
试试 JSON.parse(Object.keys(req.body)[0]).token
但即使这可行,它仍然不是最佳做法,您应该编辑发送正文的方式
我正在尝试使用我的应用程序设置一个简单的 google 登录服务。
我重新创建了一个简化版本的登录方案。
在由 google 编辑的 id_token
return 上使用 console.log()
时,我得到了例外的令牌。在登录文件中,我使用 xhr.send(JSON.stringify({ token: id_token }));
将令牌发送回后端。
Express 应用看起来像这样:
console.clear()
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
const port = process.env.PORT || 3000
app.set('view engine', 'ejs')
app.use(express.json())
app.use(express.urlencoded({extended: true}))
app.post('/login', (req, res) =>{
console.log(req.body)
console.log(req.body.token)
})
app.listen(port, ()=>{
console.log(`Server running on http://localhost:${port}`)
})
为什么 console.log(req.body)
return 是正确的 json 对象而 console.log(req.body.token)
return 未定义?到目前为止,不幸的是我只在使用 bodyParser 时找到了方法。
响应req.body
:
{ '{"token":"eyJ...c9g"}': ''}
编辑:
正如 Mohamed 所建议的(标记答案),我最终编辑了正文本身:
xhr.send('idtoken=' + id_token);
允许我使用 console.log(req.body.idtoken)
body-parser 与 express.json 相同,您可以在此处看到 https://github.com/expressjs/express/blob/master/lib/express.js
您的 req.body 有一个嵌套对象作为键,其中的值为空字符串 JSON 对象本身
{ '{"token":"eyJ...c9g"}': ''}
这部分是一个键,它的值是一个空字符串
'{"token":"eyJ...c9g"}'
试试 JSON.parse(Object.keys(req.body)[0]).token
但即使这可行,它仍然不是最佳做法,您应该编辑发送正文的方式