Я всегда помещал функции, обращающиеся к API, в экшены Vuex, но задумался об ином подходе - организовывать вызовы API в кастомных классах-сервисах - один класс для каждой сущности, где каждый вызов API является статической функцией, возвращающей промис. Затем в компонентах происходит обращение вида:
<EntityName>.<methodName>
.then((res) => {})
...
Концептуально что-то вроде ресурсов в Laravel. На мой взгляд, подход Vuex обеспечивает хорошую структуру типа состояние-действие-мутация. Однако, один аргумент в пользу использования классов все же посетил мою голову. Заключается он в следующем: в state, actions и mutations Vuex должна быть только логика, которая используется/будет использоваться в нескольких местах приложения, ибо Vuex именно для этого и создан - для централизации данных. Все же остальные обращения к АПИ, предполагающие только частное применение, должны быть вынесены в классы-сервисы (или ресурсы, как угодно), дабы не захламлять ни кодовую базу SFC, ни общее хранилище.
Хотелось бы услышать мнение более опытных коллег. Спасибо.