在Laravel中路由vue / ajax请求的正确方法?

时间:2018-11-04 02:22:47

标签: php ajax laravel vue.js

我是laravel的新手,它使Web服务可以在不使用javascript的情况下运行(如果用户禁用了它或其他功能。)

但是能够执行某些操作而不刷新整个页面将是更好的用户体验。我想说的是,发送表单而不重新加载页面或刷新通知。

我能想到的选择是:

1)将ajax发送到与纯html表单相同的路由,但带有一个额外的变量,并在检测到该变量时让我的laravel用json响应

2)使用API​​路由?这会检测到当前登录的用户吗?

3)为所有ajax都创建新路线,即使它们的功能与我当前的路线相同(除了返回视图外)

此外,CSRF令牌是否可以连续工作多次,还是需要禁用它才能在不刷新页面的情况下连续处理多个ajax表单帖子?

1 个答案:

答案 0 :(得分:2)

我建议将路由分开,以防止出现奇怪的缓存错误,并且为了使代码随时间变化而保持您的理智。

Laravel开箱即用,可让您在routes/web.php中定义Web路由,在routes/api.php中定义api路由。默认情况下,在api.php文件中定义的路由将在/api/*可用。用这种方法管理更改应用程序要容易得多,而不是试图让控制器同时执行视图和api响应。

使用Laravel Passport,将auth:api添加到Laravel\Passport\Http\Middleware\CreateFreshApiToken中间件组中后,您的API路由就可以通过web中间件来检测当前登录的用户。 https://laravel.com/docs/5.7/passport#consuming-your-api-with-javascript

一种管理重复控制器的简单方法(一个用于Web,一个用于api)是使用php artisan make:controller Api/FooController将Api控制器置于其自己的命名空间中。您甚至可以通过编辑RouteServiceProvider.php来设置Api路由,以默认情况下在此名称空间中查找控制器。