2017-02-09 25 views
0

我一直有問題獲取自定義API的帖子正文。在將body-parser添加到我的package.json並運行npm install之後,我簡單地工作了,但現在我面臨的是request.body在整個應用程序中沒有任何數據。Azure移動應用程序張貼正文與身體分析器空身體

在我的app.js中,我用下面幾行代碼註冊了body parser。

app.use(bodyParser.json({ limit: '50mb' })); 
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); 

在我坐在API文件夾中的自定義API中,我有類似的東西。

post: (request, response, next) => { 
    var body = request.body; 
    var context = request.azureMobile; } 

request.body每次都會空出來。我已經用JSON和表單參數嘗試過了。兩者都不起作用。在本例中,我在本地運行,但在將其推送到Azure時無法運行。我已經嘗試了新的項目,不同的API文件,以及其他建議。我很茫然。這麼簡單的事情不應該是這麼複雜。

+0

在什麼時候,你將在app.js身體解析器中間件?必須在安裝移動應用程序中間件之前安裝它。順便提一下,您使用的是什麼版本的移動應用程序SDK?我們前段時間將自動正文解析添加到自定義API。 –

+0

好的,這是我發現的。看起來問題與本地運行的代碼隔離開來。似乎在Azure中正常工作。在這種情況下,我正在使用Visual Studio代碼進行調試。移動應用版本是3.0.1。它會工作一段時間,然後停止。我卸載並重新安裝bodyparser軟件包,然後再次調試,它將工作。我注意到,當我有非常大的郵政機構時,如果我刪除它併發布一些小的郵件,它將從此開始工作。確實很奇怪。我也可以在多臺電腦上使用。 –

回答

0

正如@Dale前面提到的,截至今天,我們不需要安裝body-parser中間件,以在Azure移動應用程序中獲取自定義API的POST正文。我的猜測是,您在請求標題中錯過了Content-Type

以下是我的測試結果:

testBody.js

module.exports = { 

    "post": function (req, res, next) { 
     res.send('request body: ' + JSON.stringify(req.body)); 
    } 
} 

enter image description here