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, ведь такое же имя может быть у другой сущности. Так и есть?
  • Вопрос задан
  • 748 просмотров
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
1) этот вопрос решается такой штукой как GraphQL. Очень рекомендую ознакомиться
2) увы, не фронт, не в теме
Ответ написан
@Lavich
Frontend developer
1. Тут два варианта: на странице делаете сразу несколько запросов к нужным маршрутам апи, например, используюя Promise.all для распараллеливания запросов или второй вариант: на бекенде группируете нужные данные, и отдаете их через маршрут /api/main, например, или что у вас там за страница.
2. Вот пространство имён для Vuex
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы