В этом разделе мы рассмотрим типичные ошибки, возникающие при обращении к REST-интерфейсу прикладного решения. Ошибки могут возникать как на стороне клиентского приложения, так и на стороне сервера. В случае возникновения ошибки на клиенте сервер пытается уточнить причину ошибки и может передать клиентскому приложению дополнительный внутренний код ошибки и информационное сообщение в теле ответа.
В первую очередь нужно понять, работает ли вообще REST-интерфейс с интересующей нас информационной базой. Для этого достаточно в браузере просто набрать URL: <путь публикации базы>/odata/standard.odata. Должен вернуться следующий ответ сервера (листинг 1.122).
Листинг 1.122. Ответ сервера
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="http://localhost/EXT/odata/standard.odata">
<workspace>
<atom:title>Default</atom:title>
</workspace>
</service>
Этот ответ говорит о том, что интерфейс работает, но для интерфейса OData недоступны никакие объекты конфигурации.
Ниже мы рассмотрим несколько типичных ошибок, которые возникают в случае неправильного написания URL.
Например, при указании адреса ресурса вы ошиблись в имени объекта конфигурации (листинг 1.123).
Листинг 1.123. URL запроса
localhost/REST/odata/standard.odata/CatalogДолжности?$format=json
В ответе сервера будет возвращен код ошибки – 8 и описание ошибки – «Тип сущности не найден» (листинг 1.124).
Листинг 1.124. Ответ сервера
{
"odata.error": {
"code": "8",
"message": {
"lang": "ru",
"value": "\"CatalogПоставщики\" entity is not found"
}
}
}
Если при указании адреса ресурса вы ошиблись в значении ссылки на конкретный объект конфигурации (листинг 1.125).
Листинг 1.125. URL запроса
localhost/REST/odata/standard.odata/Catalog_Должности(guid'88d54406-36a1-11e9-8bb2-642737df2049')?$format=json&
В ответе сервера будет возвращен код ошибки – 9 и описание ошибки – «Экземпляр сущности не найден» (листинг 1.126).
Листинг 1.126. Ответ сервера
{
"odata.error": {
"code": "9",
"message": {
"lang": "ru",
"value": "Entity instance not found"
}
}
}
Если при указании выражения фильтра вы ошиблись, например, при написании функции отбора (листинг 1.127).
Листинг 1.127. URL запроса
localhost/REST/odata/standard.odata/Catalog_Поставщики?$format=json&$filter=startwith(Description, 'ООО') eq true
В ответе сервера будет возвращен код ошибки – 14 и описание ошибки – «Ошибка разбора опций запроса» (листинг 1.128).
Листинг 1.128. Ответ сервера
{
"odata.error": {
"code": "14",
"message": {
"lang": "ru",
"value": "Error parsing $filter query option"
}
}
}
Если при указании адреса ресурса вы ошиблись, например, в имени параметра (листинг 1.129).
Листинг 1.129. URL запроса
localhost/REST/odata/standard.odata/Catalog_Сотрудники?$format=json&$select=Description, ДатаРождения, Должность&$expan=Должность
В ответе сервера будет возвращен код ошибки – 0 и описание ошибки – «Параметр не поддерживается» (листинг 1.130).
Листинг 1.130. Ответ сервера
{
"odata.error": {
"code": "0",
"message": {
"lang": "ru",
"value": "The $expan parameter is not supported"
}
}
}
Если при указании адреса ресурса вы ошиблись, например, в имени функции (листинг 1.131).
Листинг 1.131. URL запроса
localhost/REST/odata/standard.odata/InformationRegister_ЦеныТоваров/Slice_Last()
В ответе сервера будет возвращен код ошибки – 6 и описание ошибки – «Метод не найден» (листинг 1.132).
Листинг 1.132. Ответ сервера
{
"odata.error": {
"code": "6",
"message": {
"lang": "ru",
"value": "Метод не найден"
}
}
}
Подробнее
Типичные ошибки, возникающие при получении данных через REST-интерфейс, более подробно описаны в документации «1С:Предприятия» в разделе «».