Il semble que ma requête POST soit convertie en GET quelque part dans mon code client REACT. Voici le code de réaction :
function SavePatient(event) { event.preventDefault(); console.log("Saving Patient Data"); console.log(patientData); fetch('http://localhost:3001', { Method: 'POST', Headers: { 'Accept': 'application/json', 'Content-Type': 'multipart/form-data' }, Body: JSON.stringify(patientData), Cache: 'default' });
Voici le code du serveur :
function requestListener(req,res) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader( 'Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); console.log(req.url,req.method,req.headers); // console.log(req); //process.exit(); const url = req.url; const body = []; let parsedBody = ""; function readData(chunk) { console.log(chunk); body.push(chunk); } function endReadData(chunk) { parsedBody = Buffer.concat(body).toString(); console.log(parsedBody); } if (url === '/savepatient') { const body = []; req.on('data', readData); req.on('end', endReadData); res.setHeader('Content-Type', 'text/json'); res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader( 'Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); res.write('{"name":"John", "age":30, "car":null}'); console.log('Saving...'); fs.writeFileSync('storage/message.txt','TESTE'); return res.end(); } // console.log('Aqui') // res.setHeader('Content-Type', 'text/html'); // res.write('<html>'); // res.write('<head><title>MEDPRO.app server</title></head>'); // res.write('<body><h1>Hello from the MEDPRO.app server!</h1></body>'); // res.write('</html>'); // res.end(); }
Le code du serveur fonctionne bien et je reçois normalement des requêtes POST en utilisant Postman. Le problème est que lorsque j'envoie la requête du client en utilisant fetch... elle arrive en POST... très étrange.
Je m'attendais à ce que la requête POST parvienne au serveur.
Peut être trouvé en utilisant le serveur de test Postman.
Pour mon client, voici le message que le serveur reçoit :
/obtenir{ hôte : 'localhost:3001', connexion : "garder en vie", 'sec-ch-ua' : '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"', 'sec-ch-ua-mobile' : '?0', 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, tel que Gecko) Chrome/112.0.0.0 Safari/537.36',
'sec-ch-ua-platform' : '"Windows"', Acceptez : '/', Source : 'http://localhost:3000', 'sec-fetch-site' : 'Même site', 'sec-fetch-mode' : 'cors', 'sec-fetch-dest' : 'vide', Cité par : 'http://localhost:3000/', 'Accepter l'encodage' : 'gzip, deflate, br', 'Langue réceptive' : 'en,en-US;q=0.9,es;q=0.8,pt-BR;q=0.7,pt;q=0.6' }
Essayez de tout mettre en minuscules dans la méthode
fetch
; cela devrait faire l'affaire car il est sensible à la casse.Comme ça :