Maison > Questions et réponses > le corps du texte
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' }
P粉1166315912024-04-04 00:22:48
Essayez de tout mettre en minuscules dans la méthode fetch
; cela devrait faire l'affaire car il est sensible à la casse.
Comme ça :
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' });