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

Php 在laravel中路由vue/ajax请求的正确方法?,php,ajax,laravel,vue.js,Php,Ajax,Laravel,Vue.js,我是laravel的新手,我制作了一个可以在没有javascript的情况下运行的web服务(如果用户禁用了它或其他东西) 但如果能够在不刷新整个页面的情况下执行某些操作,用户体验会更好。我希望能够说,在不重新加载页面或刷新通知的情况下发送表单 我能想到的选择是: 1) 将ajax发送到与纯html表单相同的路径,但使用一个额外的变量,并在检测到该变量时使my laravel使用json进行响应 2) 使用API路由?这会检测到当前登录的用户吗? 3) 使用ajax为所有内容创建新路由,即使它们

我是laravel的新手,我制作了一个可以在没有javascript的情况下运行的web服务(如果用户禁用了它或其他东西)

但如果能够在不刷新整个页面的情况下执行某些操作,用户体验会更好。我希望能够说,在不重新加载页面或刷新通知的情况下发送表单

我能想到的选择是:

1) 将ajax发送到与纯html表单相同的路径,但使用一个额外的变量,并在检测到该变量时使my laravel使用json进行响应

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

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


另外,CSRF令牌是否在一行中多次工作,或者我是否需要禁用它来处理一行中的多个ajax表单帖子而不刷新页面?

我建议将路由分开,这样既可以防止奇怪的缓存错误,也可以在代码随时间变化时保持清醒

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

使用Laravel Passport,当您将
Laravel\Passport\Http\middleware\CreateFreshApiToken
添加到
web
中间件组时,您的API路由可以通过
auth:API
中间件检测当前登录的用户。


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

我建议将路由分开,这样既可以防止奇怪的缓存错误,也可以在代码随时间变化时保持理智

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

使用Laravel Passport,当您将
Laravel\Passport\Http\middleware\CreateFreshApiToken
添加到
web
中间件组时,您的API路由可以通过
auth:API
中间件检测当前登录的用户。


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

正确的方法是使用API路由。只要您的
中间件
Kernal.php
配置正确,它就会检测登录的用户。确保您的
\App\Http\Middleware\EncryptCookies::class,
\Lightning\Session\Middleware\StartSession::class,
位于
api
正确的方法是使用api路由。只要您的
中间件
Kernal.php
配置正确,它就会检测登录的用户。确保您的
\App\Http\Middleware\EncryptCookies::class,
\Lightning\Session\Middleware\StartSession::class,
位于
api
middlewareGroups