2012-11-12 25 views
6

के साथ 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

$ ऐप = नया स्लिम(); \t \t $ ऐप-> प्रतिक्रिया() -> स्थिति (500); \t \t $ ऐप-> रन(); यह अभी भी फिडलर में एक http 200 लौटाता है, लेकिन वेब दृश्य अब 404 है। क्यों? – rubin

+0

HTTPLiveHeaders या फ़ायरबग या क्रोम देव उपकरण (F12) का उपयोग कर प्रतिक्रिया कोड देखें। – MrCode

+0

यह फिडलर में और फायरबग में http 200 लौटाता है। – rubin

2

आप $ app- के बाद हैडर पुश करने के लिए> रन() है, तो आप हमेशा कर सकते हैं हैडर php समारोह पर भरोसा करते हैं:

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

क्या आपने इसका परीक्षण किया है? यह मेरे लिए काम नहीं किया। –

+0

नहीं, मैंने कुछ मार्गों को परिभाषित किया है, उदाहरण के लिए: $ rest-> पोस्ट ('/ path', function() उपयोग ($ rest, $ variable) { ... अगर (कुछ गलत) { शीर्षलेख ('HTTP/1.1 400 JSON अमान्य'); निकास(); } } – Chris

+0

यह मेरे लिए काम करता है जब स्लिम की स्थिति() 'और' 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

स्लिम ढांचा वी 2 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"); 
});