检测请求是针对API调用还是针对页面请求的最佳方法是什么?我想呈现页面请求的视图并发送API请求的JSON。例如:
页面请求的常见错误:
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('500', {
message: err.message,
error: err
});
});
}
API请求的常见错误:
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.send({
message: err.message,
error: err
});
});
}
考虑使用此但需要其他意见:
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
if (req.url.startsWith('/api')){
res.send({
msg: err.message,
err: err
});
} else {
res.render('500', {
message: err.message,
error: err
});
}
});
}
答案 0 :(得分:0)
除了标题之外,API调用和页面请求之间没有根本区别。它还可能取决于您如何构建应用程序/路由。
我建议如下:
解决方案一:
使用唯一的中间件来检查请求标头的内容类型:
app.use(function(err, req, res, next) {
if (req.get('Content-Type') === 'application/json') {
// API Stuff
} else {
// Page Stuff
}
});
注意:我在这里假设您的API属于JSON类型。
解决方案二:
实施例
app.use('/api', apiRouter, apiMiddleware)