Maison  >  Questions et réponses  >  le corps du texte

POST de React.js atteint le serveur node/js en tant que GET

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粉316423089P粉316423089170 Il y a quelques jours323

répondre à tous(1)je répondrai

  • P粉116631591

    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'
      });

    répondre
    0
  • Annulerrépondre