超薄框架 - 获取所有标题

时间:2014-12-16 08:59:44

标签: php slim

我昨天发现了Slim,非常喜欢它。我遇到了一些小问题。这是一个:

我想从我的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();

我在Chrome中打开DHC并启动了GET请求

http://ipaddr/slimrestapi
添加标题 xhash = abc123

为了更好的衡量,我启动了Fiddler并在发出请求时观察了流量。 Fiddler忠实地报告了以下标题

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

但是,slim返回的结果是一个空的JSON对象,{}。

我在这里误解了什么,或者Slim中是否有错误?我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

Slim中的标题是Slim \ 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

的好读物