身体解析器无法正常工作?

时间:2018-01-24 11:35:36

标签: javascript node.js reactjs express

使用节点9,然后表达4.我似乎无法显示正文数据。在检查了其他问题之后,大多数似乎都是使用bodyParser.urlencoded来解决的,但这似乎对我没有帮助。我做错了什么?

server.js

const express = require('express');
const app = express();
var bodyParser = require('body-parser');

//not sure if i need urlencoded when just sending data from client
// app.use(bodyParser.urlencoded({ extended: false }))
// app.use(bodyParser.urlencoded({ extended: true}));
// app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
const port = process.env.PORT || 8000;

const Cat = require('./Cat');
const Dog = require('./Dog');

app.route('/animals')
  .get(function (req, res)  {
    console.log(res.body);
    res.send({ Cat, Dog });
  })
  .patch(function (req, res)  {
    console.log('patch is working!');
    console.log(req.body);
  })

app.listen(port, () => console.log(`Listening on port ${port}`));
回复看起来像这样,现在我只是试图获得显示数据的补丁。 get call工作正常,而console.log'补丁正在运行'显示正在调用fetch,但是正在显示的正文中没有数据。

客户电话

fetch('/animals', { method: 'PATCH', body: {name: 'kitten'} })

2 个答案:

答案 0 :(得分:0)

bodyParser.json()只会在请求的Content-Type与您使用的解析器匹配时解析正文,在本例中为application/json。 您对PATCH端点的请求需要在请求中包含Content-Type

答案 1 :(得分:0)

要求将来自反应的请求视为JSON。

 fetch('/animals', {
   method: 'PATCH', // POST
   headers: {'Content-Type':'application/json'},
   body: {
    "first_name": 'kitten'
   } })