Я пытаюсь создать полный REST API с Slim 3. Это было довольно просто с Slim 2. Но теперь у меня есть некоторые проблемы.
Маршрут POST и PUT не работает, как и ожидалось. Не могу получить параметры. Я нашел $request->getHeaders()
в документации, которая работает, но вместо того, чтобы получить, например, параметр length
, я получаю HTTP_LENGHT
, и каждый параметр имеет этот префикс HTTP_.
Я нашел этот вопрос, но $request->getParsedBody()
возвращает пустой массив для меня.
Я тестирую свой API с помощью расширенного клиента REST. это пример того, что я отправляю в качестве запроса 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>