2016-03-17 57 views
0

我運行的Node.js與Express.js和一切完美,直到有人把無效的JSON與內容類型的文本/ JSON,然後我的服務器有400在處理之前,我可以在Express.js中攔截傳入的請求嗎?

現在迴應,我意識到這是「正確的「但我想攔截傳入的數據,看看我是否可以通過用字符串表示法替換所有新行(\ n \ r)來修復數據(」\ n「,」\ r「),因爲出現該行成爲傳入請求的問題。具體而言,json的實例看起來像

{"foo":"bar 
and so forth"} 

其中換行符是\ n和\ r的某種組合。

,我沒有看到,我可以看看,在/按摩傳入請求的數據,然後纔會慢慢反彈爲400

+0

是的,但你必須在你的bodyparser中間件之前做。 –

+0

@KevinB,你有什麼機會鏈接到如何做的例子? –

+0

不是,但它相對簡單。 'app.use(function(){...在這裏修復它...});' –

回答

2

這正是中間件的全部。只需插入一箇中間件處理程序作爲第一個處理程序(在可能查看請求數據的任何其他應用程序之前,例如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(),除非您用新流替換請求流。

+0

那麼...我需要什麼樣的屬性?我將運行一個正則表達式去除新行...... –

+0

@GeniaS。 - 您嘗試解決什麼類型的請求?它是一個POST嗎?這決定了數據在請求中的位置。 – jfriend00

+0

是的,很抱歉,這是一條帖子 –

相關問題