Как вернуть сообщение об ошибке?

Silentland

Новичок
Silentland, а тебе уже давно ответили.
Как отправить код ошибки?
Ответ:
PHP:
Header('HTTP/1.1 503 Service Unavailable')
Как отправить код и текст ошибки в теле запроса?
Ответ:
PHP:
{
    "errno": 2,
    "error": "Technical works",
    "data": ""
}
{
    "errno": 0,
    "error": "",
    "data": {
        mydata: 123
    }
}
Как отправить текст ошибки в заголовке?
Нет ответа...

а что случилось с node js и yii за которыми будущее?:)
У yii вторая версия во всю тестируется, скоро выйдет в продакшен, можно будет юзать. А за нодой очень далекое будущее. Без нормальных фреймворков боязно пересаживаться. Может Метеор всё исправит, кто знает...
 

fixxxer

К.О.
Партнер клуба
Обрабатываю ответ сервера REST библиотекой из Ангуляра. Там есть функция запрашивающая весь массив данных и создающая на каждый элемент по ресурсу. Так вот, если в ответ приходит не массив, а строка ошибки, то она просто разбивается по буквам и получается бред
Угу, надо аккуратно работать с ошибками и заворачивать в json все ответы, и еще в nginx-е в error page 50x подложить на нужный локейшен json. :)

Вообще ангуляровский $http очень хочется взять и переписать.
 

Ragazzo

TDD interested
Желательно response code спускать в тело ответа, чтобы не заставлять клиента парсить заголовки. Обычно так и делают кидая 200 Ok, а настоящий response_code в json. Тогда и nginx и прочее настраивать не надо будет как миниплюс :)
 

Ragazzo

TDD interested
fixxxer
я понял, просто процитировал умные мысли из книжки по REST'ful API ;)
 

Silentland

Новичок
А что будет, если nginx не настроить? Просто json не распарсится, но код ошибки-то придет?

Что же это за задачи такие, что $http не справляется? Пока даже из $resource удается выжать то что надо
 

hell0w0rd

Продвинутый новичок
Как отправить текст ошибки в заголовке?
Текст ошибки - это уже content.... ведь ответ - документ, через header заполняется мета-информация, все остальное - контент
 

fixxxer

К.О.
Партнер клуба
А что будет, если nginx не настроить? Просто json не распарсится, но код ошибки-то придет?
да. ну как то не хочется иметь мусор в респонсе

Что же это за задачи такие, что $http не справляется? Пока даже из $resource удается выжать то что надо
upload progress, например
 

Silentland

Новичок
Текст ошибки - это уже content.... ведь ответ - документ, через header заполняется мета-информация, все остальное - контент
Ну вот, значит ответ на третий вопрос: нельзя :)

upload progress, например
Да, точно, они пока не сделали доступ к xhr объекту. Приходится своими силами пока: http://jsfiddle.net/danielzen/utp7j/
 

Silentland

Новичок
Удалились последние сообщения. Скорее всего из-за краха сервера. Восстановлю по памяти:

Писал:
fixxxer ответил:
да все равно для чего-нибудь с angular-ui рано или поздно jquery втащить придется, я в этом плане особо пуризмом не страдаю, главное тут

1) не трогать jquery вне директив
2) не лазить выше angular.element, то есть element.find(childSelector) но не $(selector)
-----------------
Следующий вопрос, как сделать, чтобы сервер отсылал подобные ошибки
<br />
<b>Parse error</b>: syntax error, unexpected '$res' (T_VARIABLE) in <b>W:\test\www\action.php</b> on line <b>128</b><br />
С кодом ошибки, а не с кодом 200?
 

Фанат

oncle terrible
Команда форума
Таких сообщений сервер НИКОГДА НИКУДА отсылать не должен!
 

Фанат

oncle terrible
Команда форума
В теории, при возникновении ошибки, пхп начиная с версии 5.3.с-чем-то должен отдавать 503 сам.
Но иногда это не работает. Но php-fpm работает железно - он для этого и создавался
 

Silentland

Новичок
В теории, при возникновении ошибки, пхп начиная с версии 5.3.с-чем-то должен отдавать 503 сам. Но иногда это не работает.
Вот-вот. В моем 5.4.16 не сработало. Видимо, настройки не те стоят... Будем надеяться, что провайдеры настраивают как надо.
 

Фанат

oncle terrible
Команда форума
Хех :)
Я уж забыл, когда хостинг себе не сам настраивал :)
 

Silentland

Новичок
Тут две стороны медали. Когда делаю простые сайты на хостинге за 100 руб., хочется чтобы сразу всё работало с любым сервером. А в серьезных проектах по-любому всегда самому приходится настраивать, это да :)
 

fixxxer

К.О.
Партнер клуба
Следующий вопрос, как сделать, чтобы сервер отсылал подобные ошибки

С кодом ошибки, а не с кодом 200?
Вообще в этом случае начиная с 5.3.x должно быть всегда 50x. Был баг в xdebug-е, но его вроде исправили http://bugs.xdebug.org/view.php?id=587

В крайнем случае, можно в shutdown function проверять error_get_last.
 

Silentland

Новичок
fixxxer (и другие) писал выше что не жалуешь ангулярский $resource, например, из-за невозможности получить данные о прогрессе. Так и не понял, в чем проблема. Делаю загрузчик файлов https://github.com/tamtakoe/oi.file и ни разу не столкнулся с какими-то ограничениями в этом плане (сложно представить в каких еще ситуациях нужен детальный прогресс). Может быть я что-то не так делаю. Можешь посмотреть?
 

Yaponchick

Новичок
Почитал я тему, и полностью согласен с фанатом, он какой-то мозго-...коитусер
Идеально решение для вас:

PHP:
header("410 Gone");
setCookie("errorData", serialize(array("data" => 1, errorText => "бла-бла-бла")));
Почему ушёл? Вот вам:
Код:
http://www.youtube.com/watch?v=WxGS-2M6_5I
 
Сверху