Сериализуя XdUser в JSON, вы должны быть уверены, что сериализатор не будет обрабатывать XdUser#entity
и другие общедоступные ссылки, которые могут содержать большое количество ненужных данных.Десериализация приносит другие проблемы, потому что десериализатор должен быть проинформирован о том, как создать экземпляр класса из json, используя конструктор XdUser(entity: Entity)
.
Из моего будущего лучшего выбора есть еще один уровень для API покоя.Это дает возможность контролировать количество раскрываемых данных, контролировать разрешения (если они у вас есть) и способ обновления сущностей.
Уровень API отдыха остальных будет реализован следующим образом:
open class EntityVO<T: XdEntity>(xdId: String?) {
}
class UserVO(xdId: String?): EntityVO<XdUser>(xdId: String?) {
var someName by delegateTo(XdUser::someName)
var someNumber by delegateTo(XdUser::someNumber)
}
и delegateTo
должны предоставить делегата, который будет искать XdUser по xdId и получать / устанавливать значение, используя указанное свойство XdUser.Для ссылок / ссылок логика будет более сложной, но идея может быть такой же.