codeturn
@codeturn

Как правильно реализовать restapi с vuejs?

Привет. Есть проект, который я хочу переписать с php на vue и restapi (laravel). Немного по изучал vue, vue-cli, vuex, ssr и начало появляться общее представление как это сделать. Но есть пара вопросов:
1) Для примера есть страница категории на которой выводятся новости, фильмы, кинотеатры. Сейчас это выводится все на одной странице, и нужно вывести это так же одним view компонентом. Если я правильно понимаю структуру rest api, то для каждого объекта (категория, новости, фильмы ..) у нас есть свой контроллер и свои маршруты: categories, films, news .. и тд. Каждый контроллер ресурсный, то есть имеет полный crud. Это весьма удобно для админ панели, но на пользовательской части нам нужно получить не один объект, а 4. И получается нужен отдельный роут, который будет возвращать всю нужную инфу по одному маршруту. Например GET: Categories/service/:id - вернет нужную инфу для формирования страницы.
На сколько это верно?
2) Второй вопрос связан c vuex. и он уже снят, потому как this.$store.module.state как надо возврощает все стейты модуля)
Мне понравилась система модулей и все супер, но смущает, что нет (или я его не нашел) пространства имен. То есть все состояния, гетеры и функции распространяются на весь this.$store.state и нет возможности обратиться к стейту конкретного модуля (this.$store.module.state). Получается я должен называть стейты с префиксом в виде модуля: newsStatus, filmStatus и тд, а не могу просто хранить стейт с именем status, ведь такое же имя может быть у другой сущности. Так и есть?
  • Вопрос задан
  • 734 просмотра
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
1) этот вопрос решается такой штукой как GraphQL. Очень рекомендую ознакомиться
2) увы, не фронт, не в теме
Ответ написан
@Lavich
Frontend developer
1. Тут два варианта: на странице делаете сразу несколько запросов к нужным маршрутам апи, например, используюя Promise.all для распараллеливания запросов или второй вариант: на бекенде группируете нужные данные, и отдаете их через маршрут /api/main, например, или что у вас там за страница.
2. Вот пространство имён для Vuex
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YLab Тольятти
от 80 000 до 120 000 руб.
Junto Москва
от 90 000 до 120 000 руб.
06 дек. 2019, в 17:44
5000 руб./за проект
06 дек. 2019, в 17:41
1500 руб./за проект
06 дек. 2019, в 17:10
3000 руб./за проект