航班 PHP RESTful API 未返回 HTTP 状态 header
Flight PHP RESTful API not returning HTTP Status header
我正在使用 Flight PHP 框架在 PHP 中开发 RESTful API。除了我的所有路由,一切都运行良好,来自 API 的响应始终包含 HTTP 状态“200”,即使我使用 PHP 代码将其设置为“403”或“500”:
header('HTTP/1.1 403 Forbidden');
我正在使用 POSTMAN chrome 添加向 API 发送呼叫,它始终 returns 状态为“200 OK”。
这是航班 PHP 代码:
Flight::route('GET /organisation/id', function(){
if (isset($_SERVER['HTTP_APIKEY']) && isset($_SERVER['HTTP_CLIENTID'])) {
$organisationID = checkAPIKey($_SERVER['HTTP_APIKEY']);
if ($organisationID !== false) {
$response = array('status' => '200', 'data' => array('organisationID' => $organisationID));
header('HTTP/1.1 200 OK');
header('Content-type: application/json');
logAPICall($_SERVER['HTTP_CLIENTID'], $organisationID, $_SERVER['REMOTE_ADDR'], json_encode($response), '', $_SERVER['HTTP_APIKEY']);
echo json_encode($response);
} else {
header('HTTP/1.1 403 Forbidden');
header('Content-type: application/json');
$responseArray = array( 'status' => '403', 'errorCode' => '1', 'error' => 'Unauthorised API access');
logAPICall($_SERVER['HTTP_CLIENTID'], $organisationID, $_SERVER['REMOTE_ADDR'], json_encode($responseArray), '', 'No API Key');
$stmt = null;
$db = null;
echo json_encode($responseArray);
}
} else {
header('HTTP/1.1 403 Forbidden');
header('Content-type: application/json');
$responseArray = array( 'status' => '403', 'errorCode' => '1', 'error' => 'Unauthorised API access or Missing Client Header');
logAPICall('No Client Header', '', $_SERVER['REMOTE_ADDR'], json_encode($responseArray), '', 'No API Key');
$stmt = null;
$db = null;
echo json_encode($responseArray);
}
});
任何关于为什么会发生这种情况的想法将不胜感激!干杯
无法回答您的问题,您是否尝试过使用框架的json方法?它对我有用。
Flight::json(array(
'status' => 403,
'errorCode' => '1'
), 403);
见source。
我正在使用 Flight PHP 框架在 PHP 中开发 RESTful API。除了我的所有路由,一切都运行良好,来自 API 的响应始终包含 HTTP 状态“200”,即使我使用 PHP 代码将其设置为“403”或“500”:
header('HTTP/1.1 403 Forbidden');
我正在使用 POSTMAN chrome 添加向 API 发送呼叫,它始终 returns 状态为“200 OK”。
这是航班 PHP 代码:
Flight::route('GET /organisation/id', function(){
if (isset($_SERVER['HTTP_APIKEY']) && isset($_SERVER['HTTP_CLIENTID'])) {
$organisationID = checkAPIKey($_SERVER['HTTP_APIKEY']);
if ($organisationID !== false) {
$response = array('status' => '200', 'data' => array('organisationID' => $organisationID));
header('HTTP/1.1 200 OK');
header('Content-type: application/json');
logAPICall($_SERVER['HTTP_CLIENTID'], $organisationID, $_SERVER['REMOTE_ADDR'], json_encode($response), '', $_SERVER['HTTP_APIKEY']);
echo json_encode($response);
} else {
header('HTTP/1.1 403 Forbidden');
header('Content-type: application/json');
$responseArray = array( 'status' => '403', 'errorCode' => '1', 'error' => 'Unauthorised API access');
logAPICall($_SERVER['HTTP_CLIENTID'], $organisationID, $_SERVER['REMOTE_ADDR'], json_encode($responseArray), '', 'No API Key');
$stmt = null;
$db = null;
echo json_encode($responseArray);
}
} else {
header('HTTP/1.1 403 Forbidden');
header('Content-type: application/json');
$responseArray = array( 'status' => '403', 'errorCode' => '1', 'error' => 'Unauthorised API access or Missing Client Header');
logAPICall('No Client Header', '', $_SERVER['REMOTE_ADDR'], json_encode($responseArray), '', 'No API Key');
$stmt = null;
$db = null;
echo json_encode($responseArray);
}
});
任何关于为什么会发生这种情况的想法将不胜感激!干杯
无法回答您的问题,您是否尝试过使用框架的json方法?它对我有用。
Flight::json(array(
'status' => 403,
'errorCode' => '1'
), 403);
见source。