POST de React.js atteint le serveur node/js en tant que GET
P粉316423089
P粉316423089 2024-04-03 17:22:04
0
1
472

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粉316423089
P粉316423089

répondre à tous(1)
P粉116631591

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'
  });
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal