node.js - 在 expressjs 中记录传入请求
问题描述
我期待我的 expressjs api 中有一个 json。但是当我收到请求时出现以下错误
SyntaxError: Unexpected token ' in JSON at position 2
at JSON.parse (<anonymous>)
at parse (/home/admin/middleware-2.0/node_modules/body-parser/lib/types/json.js:89:19)
at /home/admin/middleware-2.0/node_modules/body-parser/lib/read.js:121:18
at invokeCallback (/home/admin/middleware-2.0/node_modules/raw-body/index.js:224:16)
at done (/home/admin/middleware-2.0/node_modules/raw-body/index.js:213:7)
at IncomingMessage.onEnd (/home/admin/middleware-2.0/node_modules/raw-body/index.js:273:7)
at IncomingMessage.emit (events.js:388:22)
at endReadableNT (internal/streams/readable.js:1336:12)
at processTicksAndRejections (internal/process/task_queues.js:82:21)
是的,我确定请求格式不是 json,但我们无法登录以检查请求。我们无权访问源应用程序代码以在源代码级别进行验证。我怎么能在我的api中做到这一点。
下面是快递代码
const express = require('express')
const app = express();
app.post('/n2/offline', (req, res) => {
console.log('req before', req.body)
res.status(200).send();
} )
const port = 3001
app.use(express.json());
app.listen(port, () => {
console.log(`Message Receiver accepting requests on port ${port}`)
})
解决方案
您可以编写一个错误处理中间件来捕获控制台中的错误。
app.use((err, req, res, next) => {
console.error(err);
if (err.status === 400) {
return res.status(err.status).send("Invalid JSON");
}
return next(err);
});
推荐阅读
- r - R、Bonferonni 和 Holm 测试
- java - 动态或在用户 PC 上上传和解密时的 AES 加密
- javascript - 如何使此代码与异步一起使用
- javascript - 连接两个变量并使用javascript查找数组值位置
- asp.net-core - Visual Studio Code 不复制 nlog.config
- css - CSS-悬停效果不适用于特定元素
- php - 变量仅输出其几个字符串中的第一个字符
- c# - C# .NET 串口打开并立即关闭在 115200
- python - 如何将 dicom 图像拆分为图块?
- scala - 移除对具有 Unit 返回类型的函数的调用时出现奇怪的 Scala 编译器错误,这怎么可能?