2013-08-06 4 views
5

Ich bin ziemlich neu im Express-Framework. Ich konnte die Dokumentation für die Methode "application.post()" in der Express-API-Referenz nicht finden. Kann mir jemand einige Beispiele für alle möglichen Parameter nennen, die ich in die Funktion einbauen kann? Ich habe ein paar Seiten mit dem folgenden Beispiel gelesen, was bedeutet der erste Parameter?Express Framework app.post und app.get

  1. Ich weiß, der zweite Parameter ist die Callback-Funktion, aber was genau setzen wir in den ersten Parameter?

    app.post('/', function(req, res){ 
    
  2. Auch, lassen Sie uns sagen, dass wir die Benutzer (senden Daten an unseren Server) ID-Nummern mit einem bestimmten Format ([stellen {id: 134123, URL: www.qwer.com}, {id: 131211, URL: www.asdf.com}]). Wir möchten dann die IDs extrahieren und die Daten mit diesen IDs von irgendwo auf unserem Server abrufen. Wie würden wir die app.post-Methode schreiben, die es uns ermöglicht, die Eingabe eines Array von Objekten zu manipulieren, so dass wir nur die ID (Schlüssel) des Objekts verwenden, um die notwendigen Informationen unabhängig von anderen Schlüsseln in den Objekten abzurufen. Müssen wir die App.get() -Methode verwenden? Wenn ja, wie würden wir die Funktion app.get() schreiben?

Vielen Dank für Ihre Eingaben.

Antwort

6

1. app.get('/', function(req, res){
Dies sagt ausdrücklich für Anfragen an / und führen Sie die Funktion zu hören, wenn es man sieht.

Das erste Argument ist ein passendes Muster. Manchmal kann ein literales URL-Fragment wie '/' oder '/privacy' auch Substitutionen wie unten gezeigt durchführen. Sie können auch reguläre Ausdrücke wie erforderlich anpassen, wie beschrieben here.

Alle internen Teile von Express folgen dem Muster function(req, res, next). Eine eingehende Anfrage beginnt an der Spitze der Middlewarekette (z. B. bodyParser) und wird weitergegeben, bis etwas eine Antwort sendet oder Express an das Ende der Kette und 404 geht.

Normalerweise setzen Sie Ihre app.router am Ende der Kette. Sobald Express angekommen ist, fängt es an, die Anfrage mit allen app.get('path'..., app.post('path'... usw. in der Reihenfolge, in der sie eingerichtet wurden, abzugleichen.

Variable Substitution:

// this would match: 
// /questions/18087696/express-framework-app-post-and-app-get 

app.get('/questions/:id/:slug', function(req, res, next){ 
    db.fetch(req.params.id, function(err, question){ 
    console.log('Fetched question: '+req.params.slug'); 
    res.locals.question = question; 
    res.render('question-view'); 
    }); 
}); 

next():
Wenn Sie Ihre Handling-Funktionen wie function(req, res, next){} definiert sind, können Sie next() nennen, erhalten die Anfrage zurück in die Middleware-Kette übergeben. Sie könnten dies für z.B.eine catchall Route:

app.all('*', function(req, res, next){ 
    if(req.secure !== true) { 
    res.redirect('https://'+req.host+req.originalUrl); 
    } else { 
    next(); 
    }; 
}); 

wieder um Fragen, werden Sie diese über den anderen Routing-Funktionen setzen, wenn Sie es vor denen ausgeführt werden soll.

Ich habe noch nicht json vor, aber @ PeterLyon Lösung sieht gut aus für mich.

6

TJ ärgerlich dokumentiert dies als app.VERB(path, [callback...], callback in den Express-Dokumenten, so suchen Sie die Express-Dokumente dafür. Ich werde sie hier nicht kopieren/einfügen. Es ist seine unfreundliche Art zu sagen, dass app.get, app.post, app.put usw. alle die gleiche Funktionssignatur haben, und es gibt eine dieser Methoden für jede unterstützte Methode von HTTP.

Um Ihre posted JSON-Daten, verwenden Sie die bodyParser Middleware zu erhalten:

app.post('/yourPath', express.bodyParser(), function (req, res) { 
    //req.body is your array of objects now: 
    // [{id:134123, url:'www.qwer.com'},{id:131211,url:'www.asdf.com'}] 
}); 
+0

Diese Syntax ist ein weiteres Beispiel für die Middleware-Kette, die ich beschrieben habe! 'express.bodyParser()' gibt eine Funktion mit der Signaturfunktion (req, res, next) zurück und ruft intern 'next()' auf, sobald der json in das 'req.body' Objekt geparst wurde. Express übergibt dann die Anfrage in der Middlewarekette an das THIRD-Argument von 'app.post ('/ yourPath', ...) ', was die oben von Peter geschriebene Funktion ist. – Plato

+0

Oi, versuchen, "app.get" in der Express-Dokumentation zu finden! Danke für den 'app.VERB' Kommentar. – FriendlyGuy

Verwandte Themen