【问题标题】:Azure Function App - PHP $_GET / $_POST / $_REQUESTAzure 函数应用程序 - PHP $_GET / $_POST / $_REQUEST
【发布时间】:2017-07-02 10:39:20
【问题描述】:
似乎没有任何明确的文档来收集对在 PHP 中运行的 Azure Functions 的 GET/POST 请求。
我已经尝试了常用的 var_dump 和方差来收集数据。包括,在将 HTTP 请求集成为输入时,将变量定义为“req”。
即使指定 $_REQUEST['req'] 似乎也不会将 POST/GET 数据加载到函数中。
顺便说一句,如果您碰巧知道如何将数据加载到集成的 DocumentDB 输出中,那同样会有所帮助。
【问题讨论】:
标签:
php
azure
azure-cosmosdb
azure-functions
【解决方案1】:
没有得到回应,所以继续调查。使用file_get_contents(getenv('req'))时,似乎默认的“req”值仅在POST请求中提供请求正文
如果您在 POST 或 GET 中查找实际请求参数,这尤其无用。
您应该通过var_dump($_SERVER) 找到您需要的一切,这很乱,但您得到了您需要的值。如果其他人发现了一种更优雅的方式来实现这些价值观,请发帖。
顺便说一句,转储到 DocumentDB 绑定可以通过以下方式完成:
file_put_contents(getenv('VariableName'), "{ \"JSON\" : \"JSON Details\" } ");
【解决方案2】:
您可以通过引用REQ_QUERY_<NAME>/REQ_HEADERS_<NAME> 环境变量来访问请求参数/标头。例如:
<?php
/* request body */
$body = file_get_contents(getenv('req'));
$body = rtrim($body, "\n\r");
fwrite(STDOUT, "PHP script processed request body '$body'\r\n");
/* access query parameter 'test' */
$test = getenv('req_query_test');
fwrite(STDOUT, "Parameter Test='$test'\r\n");
/* access header 'test' */
$test = getenv('req_headers_test');
fwrite(STDOUT, "Header Test='$test'\r\n");
?>
同样,如果你的函数有路由参数,可以通过REQ_PARAMS_<NAME>环境变量访问。