我正在尝试使用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>
好的。我的错误,我只是在测试应用程序中弄错了。我把所有的参数都写为头,而不是数据形式…