Здравствуйте. Встала задача разработать SPA на Laravel + Vue (например TodoList с авторизацией). С Vue, и вообще JS фреймворками, никогда не работал. Вижу на github много скелетов, но они также различаются подходами: 1) встраивание Vue в проект Laravel (он вроде бы и так там есть в dev зависимостях). 2) Vue как самостоятельный проект, общение через REST API.
И все же, как правильнее проектировать для малых/средних проектов? Буду очень признателен, если поделитесь ссылкой на подобный проект/скелет.
Всегда делается два проекта.
1) Бекенд, реализованный в данном случае на Laravel
2) Фронтенд, реализованный на vue.js
Это два независимых проекта, которые общаются посредством RESTful API.
Для авторизации и др. действий, используется токен, советую JWT реализацию.
При разработке бекенда (а он впервую очередь делается), советую поставить Swagger (для лары есть тоже) и тестировать все в этой песочнице, но можно обойтись и postman
По сути, в вашем вопросе не важны JS и PHP фреймворки, схема будет одинаковая на любых языках и фреймворках.
Первое что попалось в поисковике по ключам laravel rest api vue jwt https://www.youtube.com/watch?v=cy50mLPk-yo
Думаю есть куча подобного материала на youtube, сам принцип реализации можно спокойно понять.
Alex Zaytseff, Можно конечно Laravel Passport. Если токен в будущем не будет выходить дальше вашей персональной странички/блога.
Т.е. если вы не будете делать API для внешних клиентов (веб-сервисов, мобильных приложений и т.д.).
Реализация Laravel Passport, исключительно для лары. А как быть мобильным приложениям, особенно если у них свои требования?
Думать надо немного шире и забыть что вы делаете что то для себя.
SharkMan, а разве Laravel Passport не реализует в полной мере все то, что может реализовать JWT от tymondesigns?
Вы правы, я рассматривал вариант апи для собственного клиента, точнее SPA. Авторизация по логину и паролю. Что бы не отдавать секреты клиенту, на стороне api используется проксирование для получение токена.
Тема с REST-Api для меня новая, поэтому не судите строго. Обязательно попробую jwt-auth, хотя бы для сравнения с passport-ом.