我用Express.js运行Node.js,一切正常,直到有人发送带有内容类型text / json的无效JSON,然后我的服务器以400响应。
现在,我意识到这是"正确"但我想拦截传入的数据,看看我是否可以通过用其字符串表示替换所有新行(\ n \ r)来修复数据(" \ n",&# 34; \ r")因为这似乎是传入请求的问题。具体来说,json的实例看起来像
{"foo":"bar
and so forth"}
换行符是\ n和\ r \ n的某种组合。
我没看到传入的请求数据在被反弹为400之前我可以查看/按下它的位置。
答案 0 :(得分:3)
这正是中间件的全部意义所在。只需插入一个中间件处理程序作为第一个处理程序(在可能查看请求数据的任何其他内容之前,如app.use(BodyParser.json())
),它会在每个请求时获得第一个破解,它可以在任何请求之前修改请求对象您的其他处理程序查看数据。
// make this the first request handler for Express
app.use(function(req, res, next) {
// examine req here and make any changes as desired
// when done, call next()
next();
});
如果是GET请求,那么数据就在那里。如果它是POST请求,您必须实际读取请求流以获取数据,然后才能处理它。这可能意味着您必须实际用自己的bodyParser.json()
替换if (mystring.equals("string")
thisstring="vi";
,除非用新流替换请求流。