【问题标题】:Slim Framework - get all headersSlim 框架 - 获取所有标题
【发布时间】:2015-02-14 12:58:17
【问题描述】:

我昨天发现了 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 中存在错误?非常感谢任何帮助。

【问题讨论】:

  • 谁有最新版本的新答案?

标签: php slim


【解决方案1】:

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

【讨论】:

  • 谢谢。我只是遇到了新手问题,还是 Slim 文档还没有出现?在发帖之前,我花了一段时间浏览文档,但没有找到 all()。除此之外,当你想(呃......)使用匿名函数时使用很好,但是当你创建除了最琐碎的 REST API 之外的任何东西时,它很快就会变得笨拙。避免全局的更好方法是坚持使用 $app = \Slim\Slim::getInstance();在每个方法的第一行。除此之外 - 只是个人观点 - 我认为使用一些明智地定义的全局变量并不是那么糟糕。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
相关资源
最近更新 更多