Creé la API en el nodo js y en el método POST obteniendo el cuerpo como indefinido. ¿Cómo puedo obtener el valor que se pasa usando la búsqueda?
código para NodeJs-------------------------------------------
const express=require('express'); const app=express() const port=3000 const fs=require('fs'); app.get('/',(req,res)=>{ res.send('hello world!'); }); app.get('/movies',(req,res)=>{ fs.readFile(__dirname+'/movies.json','utf-8',(err,data)=>{ res.send(data); }); }); app.post('/movies',(req,res)=>{ console.log(req.body); }); app.listen(port,()=>{ console.log(`app listening at http://localhost:${port}`) });código para HTML-------------------------
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <form onsubmit="submitted(event)"> <input id="field" type="text" required="true"> <button type="submit">save</button> </form> </body> <script> function submitted(e){ e.preventDefault(); const value=document.getElementById('field').value; await fetch('http://localhost:3000/movies',{ method:'POST', body:{value}, mode:'no-cors', headers:{ "Content-Type" : "application/json", 'Access-Control-Allow-Origin':'*' } }); } </script> </html>Necesita usar un middleware para analizar el cuerpo correctamente. Parece que está enviando JSON, por lo que necesitará el middleware bodyParser proporcionado por express.
Pues tienes 2 problemas:
1 problema:
Necesitas endurecer tu cuerpo como
body:JSON.stringify({value})2 Problema:
En express necesitas analizar tu cuerpo. Para eso express proporciona .json()
const express=require('express'); const app=express() const port=3000 const fs=require('fs'); app.use(express.json())