post方法节点js服务器中的请求正文为空

时间:2021-02-11 17:42:37

标签: node.js react-native express

Login.js - 反应组件。

我打印了 JSON.stringify(credentials) 对象并且它是有效的,但是当我在服务器中打印 req.body 时它是空的。

//sending a post request to the server with the username and password inserted by the user.
async function loginUser(credentials) {
  console.log(JSON.stringify(credentials));
  return fetch('http://localhost:8080/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(credentials)
  })
    .then(response => {
      console.log(response);
    })
 };

server.js

var express = require('express')
var bodyParser = require('body-parser')
var cors = require('cors')
 
var app = express()
 
app.use(cors());
// create application/json parser
var jsonParser = bodyParser.json()
 
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
 
// POST /login gets urlencoded bodies
app.post('/login', urlencodedParser, function (req, res) {
  console.log(req.body);
  res.status(200).send('welcome, ' + req.body.username)
})

1 个答案:

答案 0 :(得分:0)

你必须使用中间件来解析post请求中的json body, 你没有使用 bodyParser.json() 作为中间件
以下是您更新后的代码
server.js

var express = require('express')
var bodyParser = require('body-parser')
var cors = require('cors')
 
var app = express()
 
app.use(cors());
// create application/json parser
app.use(bodyParser.json());
// create application/x-www-form-urlencoded parser
app.use(bodyParser.urlencoded({ extended: false }));
 
// POST /login gets urlencoded bodies

app.post('/login', function (req, res) {
  console.log(req.body);
  res.status(200).send('welcome, ' + req.body.username)
})