Slim框架暂停错误代码无法正常工作

时间:2013-02-06 02:30:38

标签: php curl http-status-codes slim httpfox

我刚刚使用Slim Framework构建了一个restful API。对于错误情况,我只需针对每个错误情况回复相应的错误代码,并使用$ app-> halt调用,例如:

$app->halt(403, "Unauthorized");

但是当我使用-v卷曲我的API时,当我使用HTTPFox在Firefox中查看标题时,我总是看到错误代码500.其他人都注意到这一点?有什么我想念的吗?

3 个答案:

答案 0 :(得分:1)

我最近遇到了同样的问题,因为我忘了在我的函数中实例化$ app变量。

如果您没有明确声明要使用的功能($ app),请尝试在$ app-halt(403,' Unauthorized')之前添加以下行,以便查看所需的错误代码:

$app = Slim::getInstance();

答案 1 :(得分:0)

不允许在路由回调之外调用halt()方法。 你应该这样使用;

$app->get('/method/', function () {
  //logical controls
  //do something
    //or
  $app->halt();
});   

答案 2 :(得分:0)

halt()和setStatus()之间存在差异。

使用 halt(),您将停止当前脚本执行并根据您选择发送的HTTP状态代码和消息呈现响应。您可以使用以下代码在应用中的任何位置执行此操作:

$app = \Slim\Slim::getInstance(); //if you don't have access to $app
$statusCode = 403;
$body = 'Unauthorized';
$app->halt($statusCode, $body);
//App will stop immediately

使用 setStatus() $ this-> response-> status(); ,您只会更改正在发送的HTTP状态代码,但您的应用将会继续按正常方式执行,不会停止。它只会更改Slim在路由执行结束时发送给客户端的标头。

$app = \Slim\Slim::getInstance(); //if you don't have access to $app
$statusCode = 403;
$app->response->setStatus(400);
//App will continue normally