2014-12-16 2 views
0

Я обнаружил Slim вчера и очень нравится. Я столкнулся с некоторыми незначительными проблемами. Вот один из них:Slim Framework - получить все заголовки

Я хотел бы отправить дополнительные заголовки из моего приложения jQuery UI для моего Slim REST API. Не проблема в конце jQuery - $ .ajax предоставляет эту возможность. Тем не менее, я думал, что напишу небольшое приложение Slim, чтобы проверить собственную способность Slim предоставить мне доступ ко всем заголовкам запросов. Вот что приложение

function indexFunction() 
{ 
global $app; 
$headers = $app->request->headers; 
echo json_encode($headers); 
} 

header('Content-type:text/plain'); 
$app = new \Slim\Slim(); 
$app->get("/",'indexFunction'); 
$app->run(); 

Я открыл DHC в Chrome и выпалил запрос GET

http://ipaddr/slimrestapi 

после добавления заголовка xhash = абв123

Для хорошей мерой Я начал Скрипач и наблюдал за трафиком, когда я отправил этот запрос. Скрипач добросовестно сообщает следующие заголовки

Host: ipaddr 
Connection: keep-alive 
xhash: abc123 
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 
Accept: */* 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8,de;q=0.6,fr;q=0.4 

Однако результаты эхом от стройной являются пустой объект JSON, {}.

Я что-то не понимаю или здесь есть ошибка в Slim? Я бы очень признателен за любую помощь.

ответ

2

Заголовки в Слима являются примером Слим \ Helper \ Set Вы можете получить содержание, как вы хотите с all() функцией

json_encode($app->request()->headers()->all()); 

Или в полном примере

$app->get('/', function() use ($app) { 
    echo json_encode($app->request()->headers()->all()); 
    echo $app->request()->headers()->get('xhash'); 
}); 

пример также показывает, как вы можете избежать использования этого оператора global. Хороший обзор по этому вопросу http://tomnomnom.com/posts/why-global-state-is-the-devil-and-how-to-avoid-using-it

+0

Спасибо. У меня просто проблемы с новичками, или это небольшая документация не совсем там? Я провел некоторое время, просматривая документы перед публикацией здесь, и я не нашел все(). В отличие от этого, использование прекрасно, если вы хотите (ugh ...) использовать анонимные функции, но вскоре начнете становиться неудобными при создании чего-либо, кроме самого триала REST API. Лучший способ избежать глобального - придерживаться $ app = \ Slim \ Slim :: getInstance(); в первой строке каждого метода. Это обособленно - просто личное мнение - я думаю, что использование нескольких разумно определенных глобальных переменных не так ужасно. – DroidOS

+0

Это все: http://docs.slimframework.com/#Request-Headers – Tuim

Смежные вопросы