【问题标题】:Getting error while POST request with JSON使用 JSON 进行 POST 请求时出错
【发布时间】:2020-09-10 10:13:07
【问题描述】:

这是我的 server.js 文件代码。我正在尝试将 JSON 内容推送到用户对象中,但出现以下错误。请告诉我哪里出错了

const express = require('express')
const app = express()
const bcrypt = require('bcrypt')
const bodyParser = require('body-parser')
app.use(express.json())
const users = []

app.get('/users', (req, res) => {
  JSON.stringify(users)
  res.json(users)
})

app.post('/users', (req, res) => {
  const user = {
    name: req.body.name,
    password: req.body.password
  }
  users.push(user)
  res.status(201).send()
})

app.listen(3000, console.log("server started"));

我在 VS 代码中使用了一个名为 REST 客户端的扩展。

GET http: //localhost:3000/users

#####

POST http: //localhost:3000/users
Content-Type: application/json

{
  "name": "Tanay",
  "password": "password"
}

当我发出 POST 请求时,它会显示错误 - SyntaxError: Unexpected end of JSON input

at JSON.parse (<anonymous>)
at parse (C:\Users\TANAY RAJ\Desktop\nodePassport\Wsimplified\node_modules\body-parser\lib\types\json.js:89:19)
at C:\Users\TANAY RAJ\Desktop\nodePassport\Wsimplified\node_modules\body-parser\lib\read.js:121:18
at invokeCallback (C:\Users\TANAY RAJ\Desktop\nodePassport\Wsimplified\node_modules\raw-body\index.js:224:16)
at done (C:\Users\TANAY RAJ\Desktop\nodePassport\Wsimplified\node_modules\raw-body\index.js:213:7)
at IncomingMessage.onEnd (C:\Users\TANAY RAJ\Desktop\nodePassport\Wsimplified\node_modules\raw-body\index.js:273:7)
at IncomingMessage.emit (events.js:322:22)
at endReadableNT (_stream_readable.js:1187:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)

【问题讨论】:

  • 您的问题到底是什么?你能提供更多信息吗?
  • 当我触发 POST 请求时,我希望它将 JSON 内容推送到用户对象中,但我得到了上述错误,而不是它。希望这可以帮助您理解问题。
  • 您使用的是哪个版本的 express? express.json() 现在已弃用,因此请使用 body-parser
  • @AZ_ 即使在使用 body-parser 之后我也会遇到同样的错误

标签: javascript node.js json express web


【解决方案1】:

用户变量可能有问题。你能检查一下吗:

const user={'name':req.body.name,'password':req.body.password}

更新

我试过了:

var data = [];
const user={'name':"Deshan",'password':"password"}
data.push(user);
console.log(data);

结果如下:

[ { name: 'Deshan', password: 'password' } ]

所以可能是请求数据有问题。

【讨论】:

  • 感谢您的回复..但仍然显示相同的错误。
  • 那么肯定是请求数据有问题。您可以控制台日志并查看请求数据吗?
  • 您所做的一切都很好,但我想通过 req.body.name 和 req.body.password 分配名称和密码。你能告诉我为什么它不起作用
  • 是的。深入研究异常似乎在解析 JSON 时存在问题。您可以在stackoverflow.com/questions/4295782/… 尝试回答
  • 嘿 @DeshanKoswatte,键值存储应该是 JSON 格式的字符串。我看到单引号。
猜你喜欢
  • 2016-08-25
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多