正文解析器捕获错误 JSON
body-parser catch bad JSON
是否可以在 body-parser
中捕获错误的 JSON 语法?
下面的代码展示了我的尝试。问题是我无法访问任何 err.status
当我得到响应时:
SyntaxError: Unexpected token ] in JSON at position 57...
这将作为 HTML 页面提供给调用者。我宁愿捕获该错误并格式化一个漂亮的 JSON 作为响应。
代码尝试:
class ExampleServer extends Server {
constructor() {
...
this.app.use(bodyParser.json());
this.app.use(bodyParser.urlencoded({extended: true}));
this.app.use((err) => {
if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
Logger.Err('Bad JSON.');
}
});
...
}
}
破JSON我通过POST正文发送:
{
"numberValue": 6,
"requiredValue": "some string here"]
}
我使用的body-parser
和express
版本:
"body-parser": "^1.19.0",
"express": "^4.17.1",
如何捕捉损坏的 JSON 错误?
是的,可以指示 Express 捕获错误的 JSON 语法。尝试修改此代码:
this.app.use((error: any, req: any, res: any, next: any) => {
if (error instanceof SyntaxError) {
// Catch bad JSON.
res.sendStatus(400);
} else {
next();
}
});
是否可以在 body-parser
中捕获错误的 JSON 语法?
下面的代码展示了我的尝试。问题是我无法访问任何 err.status
当我得到响应时:
SyntaxError: Unexpected token ] in JSON at position 57...
这将作为 HTML 页面提供给调用者。我宁愿捕获该错误并格式化一个漂亮的 JSON 作为响应。
代码尝试:
class ExampleServer extends Server {
constructor() {
...
this.app.use(bodyParser.json());
this.app.use(bodyParser.urlencoded({extended: true}));
this.app.use((err) => {
if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
Logger.Err('Bad JSON.');
}
});
...
}
}
破JSON我通过POST正文发送:
{
"numberValue": 6,
"requiredValue": "some string here"]
}
我使用的body-parser
和express
版本:
"body-parser": "^1.19.0",
"express": "^4.17.1",
如何捕捉损坏的 JSON 错误?
是的,可以指示 Express 捕获错误的 JSON 语法。尝试修改此代码:
this.app.use((error: any, req: any, res: any, next: any) => {
if (error instanceof SyntaxError) {
// Catch bad JSON.
res.sendStatus(400);
} else {
next();
}
});