Heim  >  Fragen und Antworten  >  Hauptteil

POST von „react.js“ erreicht den Node/JS-Server als GET

Es scheint, dass meine POST-Anfrage irgendwo in meinem REACT-Client-Code in GET konvertiert wird. Dies ist der Reaktionscode:

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

Dies ist der Servercode:

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

Der Servercode funktioniert einwandfrei und ich erhalte POST-Anfragen normalerweise über Postman. Das Problem ist, dass, wenn ich die Anfrage vom Client mit fetch sende, sie als POST ankommt ... sehr seltsam.

Ich habe erwartet, dass die POST-Anfrage den Server erreicht.

Kann über den Postman-Testserver gefunden werden.

Für meinen Client ist dies die Nachricht, die der Server erhält:

/get{ Host: 'localhost:3001', Verbindung: „am Leben bleiben“, '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, wie Gecko) Chrome/112.0.0.0 Safari/537.36',

'sec-ch-ua-platform': '"Windows"', Akzeptieren: '/', Quelle: 'http://localhost:3000', 'sec-fetch-site': 'Gleiche Site', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'leer', Zitiert von: 'http://localhost:3000/', 'Kodierung akzeptieren': 'gzip, deflate, br', 'Rezeptive Sprache': 'en,en-US;q=0.9,es;q=0.8,pt-BR;q=0.7,pt;q=0.6' }

P粉316423089P粉316423089221 Tage vor424

Antworte allen(1)Ich werde antworten

  • P粉116631591

    P粉1166315912024-04-04 00:22:48

    尝试在 fetch 方法中将所有内容设置为小写;这应该可以解决问题,因为它区分大小写。

    就像这样:

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

    Antwort
    0
  • StornierenAntwort