我刚刚使用Slim Framework构建了一个restful API。对于错误情况,我只需针对每个错误情况回复相应的错误代码,并使用$ app-> halt调用,例如:
$app->halt(403, "Unauthorized");
但是当我使用-v卷曲我的API时,当我使用HTTPFox在Firefox中查看标题时,我总是看到错误代码500.其他人都注意到这一点?有什么我想念的吗?
答案 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