我剛剛用Slim框架構建了一個寧靜的API。對於錯誤情況我簡單地爲每個錯誤的情況下適當的錯誤代碼響應,並調用$ APP->停止,例如:超薄框架暫停錯誤代碼不起作用
$app->halt(403, "Unauthorized");
但是,當我蜷縮我的API與-v,當我看到標題的火狐HTTPFox我總是看到錯誤代碼500.其他人注意到這一點?有什麼我失蹤?
我剛剛用Slim框架構建了一個寧靜的API。對於錯誤情況我簡單地爲每個錯誤的情況下適當的錯誤代碼響應,並調用$ APP->停止,例如:超薄框架暫停錯誤代碼不起作用
$app->halt(403, "Unauthorized");
但是,當我蜷縮我的API與-v,當我看到標題的火狐HTTPFox我總是看到錯誤代碼500.其他人注意到這一點?有什麼我失蹤?
不允許在路由回調之外調用halt()方法。 你應該這樣使用;
$app->get('/method/', function() {
//logical controls
//do something
//or
$app->halt();
});
我最近自己遇到了同樣的問題,因爲我忘記在我的函數中實例化$ app變量。
如果沒有明確說明你的函數中使用($應用程序),嘗試添加$ APP-停止之前以下行(403,「未授權」)才能看到希望的錯誤代碼:
$app = Slim::getInstance();
halt()和setStatus()之間有區別。
隨着停止(),你會停止當前腳本執行,並根據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()或$這個 - >響應 - >狀態();您只會更改您發送的HTTP狀態碼,但您的應用程序將繼續像往常一樣執行,不會停止。它只會改變Slim在路由執行結束時發送給客戶端的頭文件。
$app = \Slim\Slim::getInstance(); //if you don't have access to $app
$statusCode = 403;
$app->response->setStatus(400);
//App will continue normally
我從來沒有使用'halt()'方法,當我想返回一個特定的http狀態時,我使用'$ app-> response() - > status(403)''。我不確定有什麼不同。 – Odi
假設我會嘗試。但苗條的文檔具體說,你可以使用暫停給狀態代碼。再次,也許我不理解的東西。 – Hutch