2016-10-02 47 views
1

由於我只使用已生成的默認模板:如何使用簡單的HttpGET-CRUD-NodeJS示例?

module.exports = function (context, req, intable) { 
    context.log("Retrieved records:", intable); 
    context.res = { 
     status: 200, 
     body: intable 
    }; 
    context.done(); 
}; 

和下面的JSON文件:

{ 
    "bindings": [ 
    { 
     "type": "httpTrigger", 
     "direction": "in", 
     "name": "req", 
     "methods": [ 
     "get" 
     ], 
     "authLevel": "function" 
    }, 
    { 
     "type": "http", 
     "direction": "out", 
     "name": "res" 
    }, 
    { 
     "type": "table", 
     "name": "inTable", 
     "tableName": "person", 
     "connection": "serverlessexamplestorage_STORAGE", 
     "direction": "in", 
     "take": "100" 
    } 
    ], 
    "disabled": false 
} 

我怎麼才能成功地調用該函數嗎?

enter image description here

回答

3

門戶「運行」按鈕,通過發送POST請求給你的函數。但是,該模板指定methods: [ "get" ]限制該函數僅支持GET請求(因此405「方法不允許」錯誤)。

您可以使用像Postman這樣的客戶端或任何您喜愛的客戶端發送GET請求,並且該函數將成功運行。或者,您也可以通過向方法數組(methods: [ "get", "post" ])添加「post」來允許該函數接受POST請求,並且您可以從門戶中調用它。

我同意這有點混淆。問題是函數門戶不是一個完整的HTTP客戶端,所以它不允許你指定http方法,頭文件等。我們在我們的回購庫中有一個open issue來改進它。我們將在門戶網站中建立一個全功能的HTTP客戶端的程度是TBD,因此目前最好的選擇是使用外部客戶端來處理除簡單情況以外的所有情況。

+0

這是有道理的。我也在使用郵差,但是當我用POST運行HttpPost示例時,我忘了將下拉改爲GET。這是一個單獨的問題,是否有辦法動態修改'json'配置文件,以便在'inTable'填充之前改變'TableName'? –