내 익스프레스 앱은 기본 JSON 본문 파서를 사용합니다.
app.use(bodyParser.json());
app.js
파일 아래에는 REST API 경로를 구축하기위한 자체 라우터가 있습니다.
var api = require('./routes/api/index');
...
app.use('/api', api);
이 라우터에는 다음과 같은 오류 처리기가 있습니다.
router.use(function (err, req, res, next) {
debugger;
res.status(err.code ? getParseErrorStatus(err.code) : res.status || 500).send({
error: err.message
});
});
bodyParser가 요청 본문을 구문 분석하는 동안 오류를 던질 때마다 일반적인 익스프레스 오류 처리기가 호출됩니다.
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function (err, req, res, next) {
debugger;
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
이는 /api/*
API 라우터에 의해 포착 된 URL에 대한 호출에도 적용 됩니다.
항상 일반 오류 처리기를 호출하는 대신 URL이 API URL 인 경우 JSON 구문 분석 오류 (체인에서 미들웨어에 포착 됨)를 API 라우터에서 정의한 오류 처리기를 호출하도록 만들 수 있습니까?
오류 처리기는 동일한 라우터 스택 수준에서 호출됩니다. bodyParser.json()
메인 / 루트 / 앱 레이어에서 실행 되기 때문에 메인 / 루트 / 앱 레이어에서 첫 번째 오류 핸들러를 찾습니다.
따라서 API 본문 구문 분석 오류를 처리 bodyParser.json()
하려면 본문 구문 분석이 필요한 각 경로 / 라우터로 미들웨어를 이동해야합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다