使用Slim 3获取POST PUT参数


Get POST PUT parameters with Slim 3

我正在尝试使用Slim 3构建一个完整的REST API。《史莱姆2》很轻松。但现在我遇到了一些问题。

POST和PUT路由无法正常工作。我无法获取参数。我在文档中找到了$request->getHeaders(),它有效,但我没有得到参数length,而是得到了HTTP_LENGHT,每个参数都有这个HTTP_前缀。

我发现了这个问题,但$request->getParsedBody()为我返回了一个空数组。

我正在用高级REST客户端测试我的API,这是我作为POST请求发送的一个示例:

POST /test/barrier HTTP/1.1
 HOST: mydomain.com
 start_lng: 2.6423183977058
 start_lat: 56.865296679535
 type: Something
 comment: testcomment
 due_date: null
 content-type: application/x-www-form-urlencoded

我用的是Slim 3.3.0。

以下是我使用$request->getHeaders():得到的一个示例

["HTTP_START_LAT"]=>
  array(1) {
    [0]=>
    string(15) "56.865296679535"
  }
  ["HTTP_START_LNG"]=>
  array(1) {
    [0]=>
    string(15) "2.6423183977058"
  }

一件奇怪的事情是,如果我尝试对$request->hasHeader('length');执行操作,我会得到参数的值,这意味着名称是正确的。我真的不明白。

我只想得到$app->request->post()在Slim 2.*中使用的参数数组。谢谢。

我的.htaccess是这样的:

RewriteEngine On
RewriteBase /test
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
<files db.config.ini>
    deny from all
</files>

好的。我的错误,我只是在测试应用程序中弄错了。我把所有的参数都写为头,而不是数据形式…