Laravel 路由、api 和 web 用例

Posted

技术标签:

【中文标题】Laravel 路由、api 和 web 用例【英文标题】:Laravel routes, api and web use cases 【发布时间】:2020-09-09 05:37:03 【问题描述】:

我正在尝试围绕 web 路由和 api 路由的用例。

到目前为止,据我了解

1) 网络路由,当我们想要返回视图时使用。

2) Api 路由,当我们要返回 json(Api 资源/集合)时使用。

但是,这两种情况都涉及 GET 请求。

当我们发出 POSTPUT 请求时,我们是把这些路由放在 api.php 还是 web.xml 中呢? php。是否取决于请求是否通过 AJAX 调用?

另外,我不知道在什么情况下我们应该使用 api 中间件和 web 中间件 默认情况下,web.php 使用 web 中间件,而 api.php 使用 api 中间件

如果我们已经登录并且想要进行 AJAX 调用,我们是否必须将该路由放在 api.phpweb.php 中>.

我们是否仅在使用基于令牌的身份验证登录时才使用 api 中间件?

【问题讨论】:

【参考方案1】:

您可以使用相同的逻辑来解释 POSTPUT 请求对任一类型的使用:

API 路由

API POST/PUT 请求将创建/更新某些实体并返回 JSON 响应,例如 POST 的新创建模型或 PUT 的更新模型。

return response()->json($model);

这在您有 javascript 代码调用 AJAX 请求的情况下很有用。当您将数据发送到 API 端点时,您应该会收到一个状态 200,其中包含您刚刚创建/更新的模型的 JSON 表示。然后你的 javascript 代码决定下一步做什么,比如关闭一个弹出窗口。

网络路由

网络POST/PUT 请求也会创建/更新某些实体,但通常会返回重定向到新页面:

session()->flash('alert', 'Model X has been updated!');
return redirect()->to('someurl');
// or
return redirect()->route('my.route.name');

POST/PUT web.php 中的路由使用简单的 <form action="..." method="POST'> 形式调用。 Javascript 在这里被排除在外,因此表单提交会将您的表单数据发送到给定的端点,并将响应直接返回到您的浏览器(可能是名为 my.route.name 的视图)。

【讨论】:

以上是关于Laravel 路由、api 和 web 用例的主要内容,如果未能解决你的问题,请参考以下文章

IOS 应用服务使用哪些 laravel 路由(Web 路由或 API 路由)

Laravel、AngularJS 和 CORS 的路由问题

Laravel 的路由

Laravel 在所有 api 路由中使用 Web 身份验证重定向到主页

laravel5.5路由

如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?