REST API problems

Здравствуйте.
Пытаюсь сделать свой первый REST API сервис.
Читая документацию, пытаюсь получить список всех сущностей определённого тип.

Добавил пользователю созданную роль(текст ниже)

public class SomeEntityRESTAccessRole extends AnnotatedRoleDefinition {
public final static String NAME = “SomeEntityRESTAccessRole”;

@EntityAccess(entityClass = SomeEntity.class, operations = {EntityOp.READ})
@Override
public EntityPermissionsContainer entityPermissions() {
    return super.entityPermissions();
}

@EntityAttributeAccess(entityClass = SomeEntity.class, view = "*")
@Override
public EntityAttributePermissionsContainer entityAttributePermissions() {
    return super.entityAttributePermissions();
}

@SpecificAccess(permissions = {"cuba.restApi.enabled"})
@Override
public SpecificPermissionsContainer specificPermissions() {
    return super.specificPermissions();
}

}

Создал rest-queries.xml, указал его в web-app.properties. Добавил в этот файл JPQL запрос без параметров, указал нужный View.

Обращаюсь к REST API моего приложения через curl. Отправляю запрос на авторизацию, получаю в ответ токен.

При попытке получения данных сущностей столкнулся с двумя проблемами

  1. При попытке получить записи через настроенный View получаю JSON с идентификаторами, но без каких-либо других полей(пример запроса ниже).
    curl -X GET
    http://localhost:8080/app/rest/v2/queries/app_SomeEntity/myQuery
    -H ‘Authorization: Bearer mscJNveYU9fBFnErkVMNNJ-Skjk’

  2. При попытке обратиться к сущности через запрос All получаю ошибку unauthorized.

Подскажите, пожалуйста, в чём может быть дело?

Добрый день! Была такая же проблема, что возвращались только id.
Мне помогло добавить в web-app.properties cuba.rest.securityScope=GENERIC_UI

Чтобы роль использовалась, когда пользователь подключается к системе через REST API, нужно указать параметр у роли:

@Role(name = "roleName", securityScope = "REST")

см. https://doc.cuba-platform.com/manual-7.2/roles.html#security_scope

cuba.rest.securityScope=GENERIC_UI

Эта настройка была создана для легаси-проектов, мигрирующихся со старых версий платформы, я бы рекомендовал ее не использовать в новых проектах. Она не нанесет вреда, но все-таки мы рекомендуем составлять раздельные роли для Web UI и для REST. Роли для REST имеет смысл составлять намного более ограничивающими в доступе к сущностям и атрибутам.

Коллеги, спасибо. Проблема решилась. Не знаю, что было не так. Написал с чистого листа - атрибуты приходят.

Не сразу ещё догадался, что для доступа к файлам тоже разрешение для пользователя нужно.

С предустановленным all запросом не экспериментировал.

Александр, спасибо. Скажите, пожалуйста, где можно посмотреть документацию или пример кода создания собственного REST API сервиса который в зависимости от параметров возвращал бы файл для скачивания? Т.е. по сути переопределял бы стандартный механизм files.

Александр, по поводу сервиса для скачивания файлов вопрос снимается. Нашёл стандартный контроллер FileDownloadController. Буду создавать по аналогии его изменённую копию.