Estaba creando mi propia api en javascript usando node y express para flutter, pero cuando trato de enviar el cuerpo requerido a mi api, aparece el error de que no se requieren datos. este es mi código api: index.js (archivo principal):
const express = require('express'); const authRouter = require('./routes/auth'); const PORT = 3000; const app = express(); app.use(express.json()); app.use(authRouter); app.get('/', (req, res) => { res.send("hello world"); }) app.listen(PORT, '0.0.0.0', () => { console.log(`connected at port ${PORT}`) });rutas/archivo de autenticación:
const express = require("express"); const authRouter = express.Router(); authRouter.post("/fetchedData", async (req, res)=>{ try { const {sampleName,samplepara} = req.body; res.status(200).json({sampleName,samplepara}); console.log("data received"); console.log(sampleName + " " + samplepara) // res.send(sampleName, samplepara) } catch (e) { res.status(500).json({ error: e.message }) console.log(e) } }); // signin Route module.exports = authRouter;enviando datos desde el código flutter:
var samples = { 'sampleName' : 'Ammar', 'samplepara' : 'this is the para' }; var jf = jsonEncode(samples); var url = Uri.parse('http://myIPaddress:3000/fetchedData'); var response = await http.post(url, body: jf,); print('Response status: ${response.statusCode}'); print('Response body: ${response.body}');pero cuando trato de hacer una solicitud desde vs code extension thunder client, entonces funciona
Agregue el encabezado Content-Type para definir los datos como json. Algo como esto:
http.post( Uri.parse('https://jsonplaceholder.typicode.com/albums'), headers: <String, String>{ 'Content-Type': 'application/json; charset=UTF-8', }, body: jsonEncode(<String, String>{ 'title': title, }),