2017-10-04 5 views
0

Ich habe konfigurieren app.js, um alle Anfrage an meine controller.js umleiten. Das folgende ist ein Beispiel dafür, wie meine controller.js aussieht.Wie Knoten Js Umleitung als HTTP POST?

router.all('/Controller/:id', controller); 
function controller(req, res){ 
    //db check using the id mentioned in the url. And gets some values. 
    //Say it is stored in data variable. 
    var URL = "SOMEURL"; 
    if(data != null){ 
     if(data.METHOD == "POST"){ 
      // needs to redirect as HTTP POST with URL. 
     }else{ 
      res.redirect(URL); 
     } 
    }else{ 
     console.log('No Data Found to redirect'); 
    } 
} 

Sie können sehen, dass ich auf eine bestimmte URL umleiten müssen, wenn die Daten.Verfahren ist POST. Ich versuchte res.redirect, aber alles, was es gibt, ist ein GET Antrag. Also, wie kann ich umleiten als HTTP POST zu einer bestimmten URL? Bitte geben Sie mir Ihre Ideen.

danke und grüße.

+0

von der Spitze meines Kopfes, würde ich sagen, dass Sie eine neue Anfrage nach dieser Methode erstellen müssen, und die Antwort an den Anrufer zurückgeben, vielleicht gibt es andere Möglichkeiten .. oder vielleicht liege ich falsch – rmjoia

+0

Warum Umleitung? Sie haben die Daten, Sie wissen bereits, was Sie tun müssen. Warum brichst du nicht einfach den Code, den du ausführen willst, in eine Funktion auf deinem Server, wo er sowohl von deiner anderen Route als auch von hier aufgerufen werden kann? Es scheint, als ob du eine sinnlose Weiterleitung machst. – jfriend00

Antwort

0

Es wäre besser, wenn Sie für jede Bedingung individuelle Methoden einrichten.

One für ein GET, ein für ein POST, PUT usw. Auf diese Weise können Sie überprüfbaren Code haben und nicht das einzige Verantwortung Prinzip

router.get('/Controller/:id', controller.GetData); 
router.put('/Controller/', controller.UpdateData); 
router.post('/Controller/', controller.SaveData); 

für Put brechen und buchen Sie die Daten in der Anfrage übergeben können .body

+0

Ja, ich habe es verstanden. Aber alles, was ich tun wollte, ist, als post zu einer URL von der Steuerung neu zu erstellen. also wie kann ich es tun? –

+0

können Sie das Anfrage-Modul verwenden .. https://www.npmjs.com/package/request –

0

Danke Jungs ..

fand meine Antwort.

alles, was ich tun muss, ist Redirect mit 307 HTTP-Status. Das Folgende wird auf den Post-Router umgeleitet.

res.redirect(307, URL);