0

我刚刚用 Slim 框架构建了一个宁静的 API。对于错误情况,我只需针对每个错误情况使用适当的错误代码进行响应,并使用 $app->halt 进行调用,例如:

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

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

4

3 回答 3

1

I ran into this same issue myself recently because I had forgotten to instantiate the $app variable within my function.

If you are not explicitly stating for your function to use($app), try adding the following line before $app-halt(403, 'Unauthorized') in order to see the desired error code:

$app = Slim::getInstance();
于 2015-06-18T04:12:21.873 回答
0

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

$app->get('/method/', function () {
  //logical controls
  //do something
    //or
  $app->halt();
});   
于 2013-11-28T22:14:39.997 回答
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
于 2015-06-19T10:03:30.747 回答