2012-11-12 21 views
6

私のAPIで何かがうまくいかない場合は、http:// 500リクエストを返すことにします。スリムフレームワークでhttp 500を返す

$app = new Slim(); 
$app->halt(500); 
私はこのコードを実行する場合それはまだHTTP 200

を返す

$status = $app->response()->status(); 
    echo $status; //Here it is 200 
$status = $app->response()->status(500); 
    echo $status; //Here it is 500 

それは、HTTP 200

答えて

6

$app->response()->status(500);が正しいか、ドキュメントを参照してくださいに私に与えて静止画をhere

ステータスを設定した後に$app->run();に電話していることを確認すると、応答コード、ヘッダー、本文が準備され出力されます。

編集、あなたがルートやスリム意志出力404応答を定義することを確認し、これは動作します:

require 'Slim/Slim.php'; 
\Slim\Slim::registerAutoloader(); 

$app = new \Slim\Slim(); 

$app->response()->status(500); 

$app->get('/', function() { 
    // index route 
}); 

$app->run(); 
+0

$ app = new Slim(); \t \t $ app-> response() - > status(500); \t \t $ app-> run();まだフィドラーでhttp 200を返しますが、Webビューは404になりました。なぜですか? – rubin

+0

HTTPLiveHeadersまたはFirebugまたはChrome Dev Tools(F12)を使用してレスポンスコードを確認します。 – MrCode

+0

ファイトラーとFirebugでhttp 200を返します。 – rubin

2

あなたは> $ APP-後に実行を()ヘッダをプッシュする必要がある場合、あなたは常にすることができますヘッダPHPの機能に依存している:

header('HTTP/1.1 401 Anonymous not allowed'); 
+0

あなたはそれをテストしましたか?それは私のために働かなかった。 –

+0

いいえ、私はいくつかのルートを定義しました:例えば、 $ rest-> post( '/ path'、function()){ ... if(something wrong){ header ( 'HTTP/1.1 400 JSON invalid'); exit(); } } – Chris

+0

Slimの 'status()'と 'setStatus()'がステータスコードを変更できなかったとき、これは私のために働いていました。他の人には、PHP 5.4以降、[http_response_code](http://php.net/http_response_code)を 'http_response_code(500);' – Cole

6

誰もがまだここにこの問題を持っている場合は、私がやってしまったものです:

セットアップエラーハンドラ

 

    $app->error(function (Exception $exc) use ($app) { 
     // custom exception codes used for HTTP status 
     if ($exc->getCode() !== 0) { 
      $app->response->setStatus($exc->getCode()); 
     } 

     $app->response->headers->set('Content-Type', 'application/json'); 
     echo json_encode(["error" => $exc->getMessage()]); 
    }); 

そして、あなたが特定のHTTPステータスを返す必要がいつでも、ステータスコードで例外をスローが含まれる:

 

    throw new Exception("My custom exception with status code of my choice", 401); 

は(スリムフォーラムにそれを見つけた)

0

スリムなフレームワークv2のwiki status

require 'Slim/Slim.php'; 

\Slim\Slim::registerAutoloader(); 

$app = new \Slim\Slim(); 

$app->get('/', function() use ($app) { 
    $app->response()->setStatus(500); 
    $app->response()->setBody("responseText"); 
    return $app->response(); 
}); 

$app->run(); 

または

$app->get('/', function() use ($app) { 
    $app->halt(500, "responseText"); 
}); 
関連する問題