3
対JSONを送信するには、我々はExpressで、このエラーハンドラを持っている:400/500エラーハンドラ - HTML
app.use(function (err, req, res, next) {
res.status(err.status || 500);
const stck = String(err.stack || err).split('\n').filter(function (s) {
return !String(s).match(/\/node_modules\// && String(s).match(/\//));
});
const joined = stck.join('\n');
console.error(joined);
const isProd = process.env.NODE_ENV === 'production';
const message = res.locals.message = (err.message || err);
const shortStackTrace = res.locals.shortStackTrace = isProd ? '' : joined;
const fullStackTrace = res.locals.fullStackTrace = isProd ? '': (err.stack || err);
if (req.headers['Content-Type'] === 'application/json') {
res.json({
message: message,
shortStackTrace: shortStackTrace,
fullStackTrace: fullStackTrace
});
}
else {
//locals for template have already been set
res.render('error');
}
});
私の質問です - 私たちは、要求の種類に応じて、JSONまたはHTMLのどちらかを返送します。私はContent-Typeヘッダーを見てこれを行うための最良の方法だと仮定します。私がチェックしなければならない他の方法はありますか?
Content-Typeヘッダーは「content-type」(小文字)と呼ばれることはありませんか?
ありがとう、私はreq.acceptsメソッドがどのように動作するかを見ていきます –