die express content negotiator Saw und ich will Verwendung Antworten zu handhaben auf Content-Header abhängig, die in kam.res.format Unterhändler mit Express Router get Post
Zum Beispiel, das ist mein .get()
.
authRoute.route('/login')
.get(function(req, res) {
res.format({
'text/html': function() {
res.render('login', {
user: req.user,
error: req.flash('error'),
loginMessage: req.flash('loginMessage'),
active: 'login'
});
},
'application/json': function() {
res.json({
message: 'This is login page'
})
}
})
})
Alles, was ich zu tun bin versucht, wenn der Request-Header ist Standard text/html, sollte es die HTML-Seite und eine JSON-Antwort zeigen, wenn Anfrage application/json ist.
Problem ist, es fängt nicht die Überschriften richtig ab. Obwohl ich die Anfrage (via Postman) machen, die Header Einstellung der application/json
zu sein, zeigt es nach wie vor die erste Bedingung in der res.format({..})
Die obige immer zeigt text/plain
stattdessen die richtige Bedingung entsprechen.
Irgendwelche Hilfe bei dem, was ich falsch mache?
authRoute.route('/login')
....
.post(passport.authenticate('local-signup', {
successRedirect: '/profile', // redirect to the secure profile section
failureRedirect: '/register', // redirect back to the signup page if there is an error
failureFlash: true // allow flash messages
}))
es natürlich war ein Tippfehler, der 'JSON/Anwendung' in der Frage. Vielen Dank. Ich habe Content-Type gesendet, also warum Express nicht abholen konnte. Versucht mit Accept und funktioniert. – Rexford