Intento configurar un servidor express, sin embargo, todas mis solicitudes POST tienen un cuerpo vacío una vez que llegan al servidor. Intenté usar body-parser o express.json() pero el resultado no cambió. Un console.log (req.body) solo me da un objeto vacío {}
Los datos se envían sin problemas, ya que las redes de herramientas de desarrollo muestran el objeto json que estoy tratando de enviar. El código sigue siendo bastante simple tanto en la API express como en el sitio web de reacción, por lo que no estoy seguro de lo que estoy haciendo mal aquí:
Expresar api:
const bodyParser = require('body-parser'); var express = require('express'); var router = express.Router(); var app = express(); app.use(bodyParser.urlencoded({extended : false})); app.use(bodyParser.json()) //app.use(express.json()) router.use((req,res,next)=>{ res.header('Access-Control-Allow-Origin','*') res.header("Access-Control-Allow-Methods", "GET, POST"); next() }) router.post("/",function (req,res,next){ console.log(req.body) res.send("blabla") }) module.exports = router;reaccionar:
async createChat(){ var data = { method:'POST', body:JSON.stringify() } console.log(data) await fetch('http://localhost:5000/create_chat',{ method: 'POST', body: JSON.stringify({ chat_name:this.state.chatName, password : { enabled: this.state.passwordYesNo, password : this.state.password }, public:this.state.publicYesNo, }) }) .then((res)=>res.text()) .then((res)=>console.log(res)) }El problema se debe a que falta el parámetro de encabezados en la llamada de búsqueda. Puede actualizar la llamada de búsqueda de esta manera e intentarlo.
await fetch('http://localhost:5000/create_chat',{ method: 'POST', headers: new Headers({'content-type': 'application/json'}), body: JSON.stringify({ chat_name:this.state.chatName, password : { enabled: this.state.passwordYesNo, password : this.state.password }, public:this.state.publicYesNo, }) })