【问题标题】:Laravel + Vue : Routes on web.php / api.phpLaravel + Vue:web.php / api.php 上的路由
【发布时间】:2018-11-24 03:56:12
【问题描述】:

我是 Laravel 的新手,我已经开始从事一个项目,我想就选择好的架构获得一些建议。

我决定用 Vue 管理我的前端,用 Laravel 管理我的后端。

我已经开始做的是通过 Laravel 捕获路由并将其发送到我的 Vue 路由以确定要加载的组件等。我正在考虑通过 axios 将“api”调用放入我的 Vue.components 以检索来自我的控制器的数据(JSON 格式),以便将它们显示到我的视图中。

这仍然是“网络”需求。

但我也在考虑我将提供的未来 API。

那么最好的选择是什么?

将一些Route::resource('model', 'Controller') 放入web.php 文件中,然后在我的Vue.components 中调用这些路由,并将Route::resource('model','Controller') 放入我的api.php 文件中?

谢谢你的回答我不知道我是否走对了。

克莱门特。

【问题讨论】:

  • 这些只是将您的路线划分为逻辑部分的组。实际上,除了 api.php 有 /api/ 前缀之外,它没有任何意义。 (web.php:http://example.com/someroute,api.php:http://example.com/api/someroute)。所以在你的情况下,api调用?使用 api.php。此外,经过几年的经营:我认为按照您描述的方式做事是有道理的,而现在您过于担心以正确的方式做事而不是完成它。
  • 感谢@ippi 的回复。是的,我听说前缀和中间件添加取决于您放置路由的文件。但是如果你想用 Laravel Passport 保护你的 API 路由,你如何在控制器中轻松地管理它,这取决于 API 请求是来自第三方客户还是通过 Vue.components ?
  • 谢谢@ippi 我读到'web'组中间件是在 web.php 路由上激活的,而不是 api.php 路由......
  • @user2917569 没错,由于中间件的设置方式,/api 路由默认是无状态的

标签: php laravel vue.js


【解决方案1】:

如果您查看app\Http\Kernel.php,您会注意到 web 和 api 组之间的区别。

  • web - 处理“标准”请求 - 他们需要一个会话,检查 针对在应用程序中全局登录的用户,处理网络 要求。网页界面的东西
  • api - 处理无状态 API 请求,很可能总是消耗并返回 json

我通常将 API 路由保存在 api.php 中,为其添加版本前缀,然后从 API 命名空间加载控制器。这使它更易于维护,因为 v1 方法可以通过潜在的 v2 版本进行扩展

Route::prefix('v1')->namespace('Api\V1')->group(function () {
    // ... API routes
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 2019-06-04
    • 2019-04-25
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多