2016-10-02 52 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'? –