Laravel Web 路由或 API 前端 VueJS 应用程序路由

Laravel Web Route or API Routes for application with VueJS in front end

我们目前正在开发一个多页面应用程序,使用 VueJS 作为前端 javascript 框架,Element.io 作为 CSS 框架。

我们不会公开任何 Web 服务或某种类型的服务。

我们的应用程序响应迅速 - 用户可以使用桌面和移动设备创建记录。

我需要创建 API 路由还是 WEB 路由就足够了? 您是否可以想到我需要 API 路由的任何场景?

Web 路由用于前端视图,其中 API 路由用于 API 调用,您肯定需要将它们分开,因为您的 VueJS 将使用 JSON 并在 return 中获得 JSON 响应,其中包含错误代码以有效处理您的错误。

网络控制器:

return view('blade_file')->with(compact('var1', 'var2'));

如果您在此处设置错误代码,它将显示该错误代码的 blade 文件,例如。 404 将向您显示位于 ./resources/views/errors/404.blade.php 的 blade 查看文件,但您的应用程序将期望 JSON 响应而不是 HTML 响应。

API 控制器:

return response()->json(compact('var1', 'var2'), 200); // success

return response()->json(['error' => 'bad request'], 400); // bad request

如果您在此处设置错误代码,您仍会收到 JSON 响应,只是指定了错误代码。

结论:

使用 API 和 Web 路由将前端和后端分开,因为 requests/responses 的处理方式不同。

备注:

  • 在向 API 发出 ajax/axios 请求时,请记住 add your CSRF token in your header
  • 确保您的中间件是 api。如果 API 只允许经过身份验证的用户,你需要中间件是 auth:api 并且你需要使用 Laravel Passport.
  • 记得将 Api 的命名空间添加到您的 API 路由中,在 routes/api.php 文件或 app/Providers/RouteServiceProvider.php.