Express App Body Parser无法与某些API一起使用



因此,我有一个Express应用程序,我一直在构建一个应用程序,该应用程序使用一个与整个应用客户端端一起使用的车身解析器。(接收后REQ数据)

但是app.use(bodyParser.json());似乎引起了API的问题,这就是为什么我对其进行评论。现在我不使用它,我将无法从我的网站上收到发布数据。

// APP
var app = express();
//app.use(bodyParser.json()); //ISSUE: this is breaks API post //but i need it to recieve MY post req data
app.use(bodyParser.urlencoded({ extended: true }));
app.use(fileUpload());

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

一个简单的kludge将是在激活BodyParser中间件之前定义Twilio使用的路由。在不知道为什么BodyParser会阻止Twilio工作的情况下,这是我能做的最好的。

在Agenell I时期,建议不为所有跟踪路线注册Body Parsers 全球,而是直接使用该路由或仅在本地使用一个路由器(路径前缀)需要的地方。

在为所有以下路线注册BodyParser之前,移动Twilio的路由器也可以工作,但可维护。

因此,如果您需要在特定路线上进行json数据,请以这种方式写入:

app.post('/some/route', bodyParser.json(), (req, res, next) => {
   // processing of your json
});

我建议这样做的原因,因为提交给服务器的正文作为流提供。每当您注册将处理身体的中间件时,它将消耗整个内容,并且您将无法使用此后还可以处理身体的任何其他中间件。仅在需要此解析器的路线上使用它可以消除此问题,并允许您根据路线使用不同的身体解析器。

您的项目越大,您越可能进入需要其他身体解析器的情况,那么您很可能会在移动路线不再起作用的时候。

<</p>

最新更新