gpt4 book ai didi

javascript - res.format 谈判者与 express router get post

转载 作者:行者123 更新时间:2023-11-30 16:02:15 25 4
gpt4 key购买 nike

看到 express content negotiator我想根据传入的内容标题来处理响应。

例如,这是我的.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'
})
}
})
})

我想做的是,如果请求 header 是标准文本/html,它应该显示 html 页面和 json 响应(如果请求是 application/json)。

问题是,它没有正确拦截 header 。尽管我发出请求(通过 Postman),将 header 设置为 application/json,它仍然在 res.format({..}) 中显示第一个条件>

上面的总是显示text/plain而不是匹配正确的条件。

对我做错了什么有帮助吗?

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
}))

最佳答案

我的猜测是您可能在请求中使用了错误的 header (可能是 Content-Type?)。您需要使用 Accept header 。此外,您的文本显示 json/application;那当然应该是 application/json

我不使用 Postman,但使用 cURL 它工作得很好:

$ curl -H'Accept:application/json' http://localhost:3000

关于javascript - res.format 谈判者与 express router get post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37546202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com