我昨天发现了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中是否有错误?我非常感谢任何帮助。
答案 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