如何在Restful API应用程序中集成Laravel和Vue.js?

时间:2017-05-22 17:48:42

标签: laravel vue.js laravel-5.4

想象一下您可以使用Restful API执行CRUD的资源Post

// in routes/api.php ...

GET     /api/v1/posts           API\V1\PostController@index
POST    /api/v1/posts           API\V1\PostController@store
GET     /api/v1/posts/{post}    API\V1\PostController@show
PATCH   /api/v1/posts/{post}    API\V1\PostController@update
// etc.

如您所见,每个端点都由Controllers\API\PostController中的控制器操作处理,例如indexstoreshowupdate等根据Laravel惯例。现在,还有一个前端专用控制器Controllers\PostController,其唯一的责任是响应一条路线/posts(在routes/web.php中)并呈现视图:

public function index()
{
    return view('posts.index');
}

反过来,这个index.blade.php有许多Vue组件,一个可以使用Axios从API中获取并列出所有Post,一个POST并创建一个新的Post对象,以及其他人要更新,删除等等。现在,问题是,如何组织和命名这些组件?这是我的镜头:

  • assets/js/components下,我创建了一个posts文件夹,并添加了index.jsshow.jscreate.jsupdate.js等,模仿Blade会在传统的Laravel应用程序中创建其他视图;
  • 每个文件都遵循标准......

    module.exports = {
        data() {
            return { /* data here */ };
        },
        created() {
            /* processing here */
        }
    }
    
  • ...并在assets/js/app.js模式后注册<resource_name-action>

    Vue.component('post-index', require('./components/posts/index.js'));
    
  • 最后,组件在index.blade.php中用作内联模板:

    <post-index inline-template>
        <!-- HTML markup here -->
    </post-index>
    

问题

  1. 此结构是否符合Vue / Laravel中推荐的做法?
  2. 足够畅销吗?组件/文件名是语义和/或标准吗?
  3. 我忽略了哪些方面?在单个应用中让您的视图与API和数据库通信是否有效?或者它们应该分成两个应用程序,一个用于前端,另一个用于后端?

0 个答案:

没有答案