Логика выполнения сложных запросов при ошибках
Каждая часть запроса может вернуть ошибку. Также и весь запрос может вернуть ошибку (в том числе псевдо-ошибку о необходимости ввести captha: 101028).
Весь запрос возвращает ошибку в двух случаях:
Некорректный JSON на входе.
Тотальное разрушение серверного ПО, в результате которого штатная обработка запросов невозможна в принципе.
Требуется captcha-проверка для текущего пользователя (ошибка 101028).
При штатной работе серверного ПО, отсутствии подозрительной активности с пользовательского IP и корректном запросе – ошибки обрабатываются отдельно для каждого подзапроса. Если сервер всё ещё «хоть немного жив», на запрос из 5-и частей он вернет 5 ответов (пусть даже все пять будут сообщать об ошибке).
При обнаружении ошибки в запросе «на изменение» (префикс w_) все последующие запросы (в т. ч. запросы на получение текущего состояния) автоматически возвращают ошибку без каких-либо попыток их обработать. Все запросы, выполненные до ошибки, отработают, изменения будут внесены (что, в частности, означает, что порядок w_ запросов имеет значение).
При обнаружении ошибки в запросе текущего состояния (префикс r_) данный запрос возвращает блок с сообщением об ошибке. Никакого влияния на соседние запросы это оказывать не должно.
Сообщение об ошибках в ответе сервера
В ответе на любой запрос на изменения сервер возвращает признак успешности. Для простых действий это будет единственный ответ сервера:
"Act1": { "success": true }
В случае возникновения ошибки сервер вернет "success": false и всегда снабдит ответ двумя дополнительными полями error_message и error_code, например:
"GetDat3": { "success": false "error_message": "Некорректные параметры вызова", "error_code": 101001 }
Запросы на получение текущего состояния в случае успеха никак не помечают данные, но в случае ошибки вернут то же самое, что и запросы на изменение (см. пример выше).
Стандартные ошибки
Любой запрос (и на изменения, и на получение данных) может вернуть следующие стандартные ошибки:
error_code | error_message | Описание |
---|---|---|
101000 | Некорректный SID | В запросе отсутствует обязательный параметр sid или он уже не валиден. Для получения актуального SID'а используйте запросы авторизации (w_create_sid), авторизации через соцсеть (w_authorise_socnet) или регистрации (w_register_user). |
101001 | Некорректные параметры вызова | В запросе передан некорректный параметр, отсутствуют обязательные параметры или передано недопустимое значение параметра. |
101002 | Неизвестная функция | В запросе передан параметр, не поддерживаемый системой. |
101003 | Внутренняя ошибка сервера | На стороне сервера ЛитРес произошла внутренняя ошибка. Попробуйте повторить запрос через некоторое время. |
101004 | Сервис временно недоступен | Работа API временно приостановлена. Попробуйте повторить запрос через некоторое время. |
101005 | Функция недоступна данному пользователю | В запросе вызвана функция, недоступная для текущей учетной записи пользователя. |
101016 | Функция недоступна данному партнеру | В запросе вызвана функция, недоступная для текущей учетной записи партнера. |
101017 | В запросе указано некорректное время | В запросе указано время time, отличающееся от серверного более чем на ±10 минут. |
101018 | Выполнение прервано, запрос не обрабатывался | Данный запрос входил в группу запросов и не был обработан, т. к. в одном из обработанных ранее запросов произошла ошибка. |
101019 | Некорректное значение параметра | error_message может быть разный, но смысл один: передан не валидный параметр. Причины могут быть разные. |
101043 | Некорректный ID приложения | В запросе отсутствует или имеет некорректное значение ID партнерского приложения (параметр app). |
101046 | Некорректная SHA-подпись | В запросе в параметре sha должен содержаться хеш SHA-256, формируемый индивидуально для каждого из запросов: $sha=Digest::SHA::sha256_hex($time.$secret_key) |
101028 | Требуется пройти captcha-тест | С вашего IP наблюдается подозрительная активность, требуется пройти проверку, что приложение не бот и за ним стоит живой пользователь. |
101116 | unknown language | Указанный в параметре uilang язык не поддерживается, либо язык указан не в стандарте ISO 639-2. |
101050 | Некорректный формат запроса | Ошибка возникает, когда в POST-запросе отсутствует поле jdata с JSON запроса или JSON не валиден. Ошибка возникает и в том случае, если размер переданного JSON превышает 1 мегабайт. |