Начните думать из пользовательского интерфейса, что вам там нужно, как часто вам это нужно и как быстро?
Затем получите данные из бэкэнда, если данных слишком много одновременно и APIиначе не может:
- получить данные и сократить до того, что нужно пользовательскому интерфейсу (бэкэнд), использовать один раз и выбросить
- ИЛИ получить данные и сократить до того, что нужно пользовательскому интерфейсу (backend), некоторое время храните в кэше
- ИЛИ предварительно обрабатывайте данные, чтобы, когда пользовательский интерфейс нуждался в них, они были готовы
Для формата возврата рассмотрим что-то более легкое, как некоторый простого имя массив JSON {"dayAverages": [0.34, 1253.432, ...]}, "month" : 2, "year": 2018}
, то в пользовательском интерфейсе адаптироваться к потребностям вашей библиотеки, (что спорно).
1015 * Также обратите внимание, как пользователи используют интерфейс, то вы можете получить некоторые идеи о том, какчтобы оптимизировать опыт (предварительная загрузка в следующем месяце ...)
Если вы делаете это в учебных целях, рассмотрите возможность сделать это async + lambdas = bonus:)