Zend_Json_Server против спецификации JSON-RPC - PullRequest
3 голосов
/ 11 января 2012

Реализация протокола JSON-RPC 2.0 в ZF допускает только коды ошибок:

const ERROR_PARSE           = -32768;
const ERROR_INVALID_REQUEST = -32600;
const ERROR_INVALID_METHOD  = -32601;
const ERROR_INVALID_PARAMS  = -32602;
const ERROR_INTERNAL        = -32603;
const ERROR_OTHER           = -32000;

плюс, диапазон (-32099, -32000)

Они определены в спецификации JSON-RPC как предварительно определенные и / или зарезервированные. По крайней мере, это то, что выходит из спецификации:

Коды ошибок от -32768 до -32000 включительно зарезервированы для предварительно определенных ошибок. Любой код в этом диапазоне, но не определенный явно ниже, зарезервирован для использования в будущем. Коды ошибок почти такие же, как те, которые предлагаются для XML-RPC по следующему URL: http://xmlrpc -epi.sourceforge. сеть / данные / rfc.fault_codes.php

код сообщения -32700 Ошибка синтаксического анализа. Сервер получил недопустимый файл JSON. Произошла ошибка на сервере при анализе текста JSON. -32600 Неверный запрос Отправленный JSON не является допустимым объектом запроса. -32601 Метод не найден Метод не существует / недоступен. -32602 Неверные параметры. Неверные параметры метода. -32603 Внутренняя ошибка Внутренняя ошибка JSON-RPC. От -32000 до -32099 Ошибка сервера Зарезервировано для ошибок сервера, определенных реализацией.

Остальная часть пространства доступна для ошибок, определенных приложением.

Нигде не говорится, что вы не можете, например, использовать -100 или 100. Я что-то упустил?

Где-то я думаю, что "ошибка сервера" и "ошибка приложения" были перепутаны ZF как одно и то же, в то время как при чтении ссылки на sourcefourge выше, очевидно, что авторы протокола имели в виду нечто иное, что позволяло разработчикам приложений Много места:

Кроме того, диапазон -32099 .. -32000 включительно зарезервирован для ошибок, определенных реализацией сервера. Ошибки сервера, которые не отображаются точно в конкретную ошибку, определенную в этой спецификации, должны быть назначены на номер в этом диапазоне. Это оставляет остаток пространства доступным для ошибок, определенных приложением.

1 Ответ

0 голосов
/ 19 января 2012

Я использую JSON-RPC компонент ZF для нескольких проектов.Это работает довольно хорошо - но я бы вряд ли считал это примером спецификации JSON-RPC.Насколько я знаю, только пара клиентов действительно тестируют свои реализации с Zend_Json_Server, так что это вряд ли является широко распространенной реализацией.В какой-то момент мне фактически пришлось пропатчить Zend_Json_Server, чтобы он работал с одним клиентом, поскольку он не следовал спецификации должным образом (с тех пор это было исправлено)., возможно Вы правы."Если он чешется достаточно, просто fork zf2 и отправьте запрос на извлечение с лучшей реализацией спецификации - намного проще получить положительный / отрицательный отзыв, когда вы смотрите на разность.Если они это примут, отправьте патч для zf1 для слияния в нисходящем направлении.

...