Je construis un formulaire d'enregistrement (passeport local comme authentification, formulaires d'aide de formulaire).
Étant donné que l'enregistrement ne connaît que les opérations GET et POST, je souhaite effectuer l'ensemble du traitement dans une fonction.
En d'autres termes, je cherche quelque chose comme:
exports.register = function(req, res){
if (req.isPost) {
// do form handling
}
res.render('user/registration.html.swig', { form: form.toHTML() });
};
La réponse était assez facile
exports.register = function(req, res) {
if (req.method == "POST") {
// do form handling
}
res.render('user/registration.html.swig', { form: form.toHTML() });
};
Mais j'ai longtemps cherché cette approche dans le guide express.
Enfin, la documentation du noeud contient de telles informations détaillées: http://nodejs.org/api/http.html#http_http_request_options_callback
Vous pouvez maintenant utiliser un package dans npm => "method-override", qui fournit une couche intermédiaire qui redéfinit la propriété "req.method".
En gros, votre client peut envoyer une demande POST avec un "req.method" modifié, quelque chose comme /registration/passportID?_method=PUT
.
Le
? _method = XXXXX
partie est pour le middleware pour identifier qu'il s'agit d'une demande PUT d'infiltration.
Le flux consiste en ce que le client envoie un POST req avec des données côté serveur, et le middleware traduit le req et exécute la route "app.put ..." correspondante.
Je pense que c'est un moyen de compromis. Pour plus d'informations: method-override