web-dev-qa-db-de.com

Express.js erhält die http-Methode im Controller

Ich baue ein Anmeldeformular (Pass-Local als Authentifizierung, Formulare als Formularhelfer).

Da die Registrierung nur GET und POST kennt, möchte ich das gesamte Handling in einer Funktion durchführen.

Mit anderen Worten suche ich nach etwas wie:

exports.register = function(req, res){
    if (req.isPost) {
       // do form handling
    }
    res.render('user/registration.html.swig', { form: form.toHTML() });
};
46
dev.pus

Die Antwort war ziemlich einfach

exports.register = function(req, res) {
    if (req.method == "POST") {
       // do form handling
    }
    res.render('user/registration.html.swig', { form: form.toHTML() });
};

Ich habe aber lange im Express-Guide nach diesem Ansatz gesucht.

Schließlich enthält die Knotendokumentation detaillierte Informationen: http://nodejs.org/api/http.html#http_http_request_options_callback

80
dev.pus

Jetzt können Sie ein Paket in npm => "method-override" verwenden, das eine Middleware-Ebene bereitstellt, die die Eigenschaft "req.method" überschreibt.

Grundsätzlich kann Ihr Client eine POST -Anforderung mit einer geänderten "req.method", etwa /registration/passportID?_method=PUT, senden. 

Das 

_ Methode = XXXXX

teil ist für die Middleware, um zu identifizieren, dass dies eine verdeckte PUT-Anforderung ist. 

Der Ablauf sieht so aus, dass der Client eine POST -Anforderung mit Daten an Ihre Serverseite sendet und die Middleware die Anforderung übersetzt und die entsprechende "app.put ..." - Route ausführt.

Ich denke, das ist ein Weg des Kompromisses. Für weitere Informationen: method-override

0
zkmoonea