Коды ответов Http не меняются, вызов die() приемлем?

Я разработал API php (5.5) для взаимодействия с базами данных на моем сервере. Пока все работает гладко, за исключением той части, где я хочу отправить коды ответа http.

Если, например, пользователь не найден в моей базе данных, я хочу вернуть 404, чтобы соответствующим образом отреагировать в моем приложении (Android).

Я не мог изменить код состояния с 200, используя:

header("HTTP/1.1 404 Not Found, true, 404);

or

http_response_code(404);

Однако, если я вручную вызову die() следующим образом:

http_response_code(404);
echo json_encode("Some response I want to send anyways");
die();

Я получаю ожидаемый код состояния.

Приемлем ли такой вызов die()? Или есть лучший способ убедиться, что мой API отправляет правильные коды ответов?

Спасибо, что нашли время, чтобы прочитать это.

Редактировать 1: это не относится к кодам 404. Я хочу, чтобы мой API также отправлял другие коды.

Джаспер


person FriesischScott    schedule 12.05.2015    source источник


Ответы (2)


Да, завершение сценария после установки правильных заголовков ответов, как правило, является правильным действием. Я не уверен, почему это не работает для вас без явного die - убедитесь, что вы не выводите какие-либо данные или заголовки после этого, которых там не должно быть.

person Furgas    schedule 12.05.2015

Используйте следующее для перенаправления на страницу 404.

header("location:404.php");
person Sudhakar Singajogi    schedule 12.05.2015
comment
Как реагировать на статус 404 http, должен управляться веб-сервером или клиентом, а не сервером приложений. - person Furgas; 12.05.2015
comment
Я не хочу перенаправлять на страницу. Мне нужен код ответа, чтобы мой клиент мог реагировать соответствующим образом. Это не относится к кодам 404. (Я отредактировал вопрос, чтобы уточнить это) - person FriesischScott; 12.05.2015