繁体   English   中英

404 - 未找到存在 Laravel 8 的 Passport Api 路由

[英]404 - Not Found Passport Api Route That Exists Laravel 8

我安装了 Passport 并在 api.php 文件中有一个路由。 Web 路由有效,但 api 路由总是给我一个 404 - Not Found in Postman。

这是我的路线

在此处输入图片说明

这是我的 UserController 功能

在此处输入图片说明

只是一个快速的。 如果错误代码是 404,请仔细检查您是在 Postman 中发出 POST 请求,而不是 GET。

请通过php artisan route:list检查路由。 还要检查您的 APP_URL 中的 .ENV 文件

如果App\\Providers\\RouteServiceProvider::class中缺少/config/app.php和对App\\Providers\\RouteServiceProvider::class的引用,您还应该检查它。

将 RouteServiceProvider 添加到/config/app.php ,路由将再次工作。

对于文件的原始 Laraval 版本,请在此处查看: https : //github.com/laravel/laravel/blob/a6c68c24c9938beef0128c3288502b8fbdf8e93d/config/app.php#L178

我被这个问题困了一个星期。 可能有很多事情会导致此问题。

1 - 确保您正确安装了护照。

看起来 laravel 8 预装了“Sanctum”,所以你可能会在某些护照的安装要求上犯错误。 再次进行安装。 Passport 安装看看我下面的示例,其中可能存在错误。

在此处输入图片说明

查看你的用户模型并确保你有“use Laravel\\Passport\\HasApiTokens;” 不是“使用 Laravel\\Sanctum\\HasApiTokens;”

在此处输入图片说明

2-如果您不使用“Sanctum”,最好将其从项目中删除

转到VSCODE左侧栏的搜索并搜索“Sanctum”。

在此处输入图片说明

单击“composer.json”,转到“require”部分并小心地删除“Sanctum”要求。 还要检查所有其他搜索结果,以确保您没有在应该是护照的地方使用 Sanctum。 如果需要,请删除它们。

在此处输入图片说明

3-在您的终端中,键入以下命令以更新作曲家并生成新的锁定文件

作曲家更新

4-如果您像我一样将用户模型移动到新文件夹(例如:version1),请转到“config/auth.php”并使用用户模型的正确路径更新用户的提供程序

在此处输入图片说明

5- 确保在 app/Http/Kernel.php 的 api 部分,“\\Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful::class”被注释掉。

在此处输入图片说明

6- 转到终端,从缓存中清除您的路线,使用以下命令列出它们并检查您在 api.php 中列出的路线是否显示在那里。

php工匠路线:清除

php工匠路线:列表

如果“php artisan route:list”显示错误,请确保您的路由声明正确。 为清楚起见,请确保使用控制器的完整路径并交叉检查 UserController 以确保函数与 api.php 文件中的内容完全匹配(它们区分大小写)。 此外,如果您在路由中使用控制器,请在“use App\\Http\\Controllers\\version1\\UserController;”上方声明它如下图所示。 在终端中重复“php artisan route:clear”和“php artisan route:list”以确保没有错误并列出您的路线。

在此处输入图片说明

7-确保您在邮递员中调用的网址正确且方法也正确。

请记住,如果您在 api.php 中的 url 是“/v1/user/register”,那么在 postman 中,您应该在 postman 中拥有“ api /v1/user/register”。 这意味着您的最终 url 将是“http://myvhostname.local/api/v1/user/register”

请记住,如果您在 api.php 中将您的路由声明为“get”,那么请确保它是 postman 中的“get”。 如果是帖子,请确保它们在邮递员中也匹配。

转到 postman 的“headers”部分并包含“Accept=application/json”,如下所示

在此处输入图片说明

8- 如果您仍然有 404-Not Found,请在“Applications >> XAMPP >> xamppfiles >> etc >> extra”中打开您的 vhost 文件“httpd-vhosts.conf”,并确保您的 vhost 如下正确声明。 不正确的声明可以使 web 路由工作,但 api 路由不会。 支付接近“Allowoverride All”。

在此处输入图片说明

您的路线现在应该可以工作了。 如果这对您有用,将不胜感激

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM