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

Posted

技术标签:

【中文标题】404 - 未找到存在 Laravel 8 的 Passport Api 路由【英文标题】:404 - Not Found Passport Api Route That Exists Laravel 8 【发布时间】:2021-11-06 19:24:03 【问题描述】:

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

这是我的路线

这是我的 UserController 函数

【问题讨论】:

• 欢迎来到 ***!请避免将代码作为图像上传。 meta.***.com/questions/285551/… 【参考方案1】:

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

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

看来 laravel 8 预装了“Sanctum”,因此您可能会在某些护照的安装要求上出错。再次进行安装。 Passport Installation 看看我下面的一个可能错误的例子。

查看您的用户模型并确保您已“使用 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 文件中的内容完全匹配(它们区分大小写)。此外,如果您在路由中使用控制器,请在“使用 App\Http\Controllers\version1\UserController;”上方声明它如下图所示。在终端中重复“php artisan route:clear”和“php artisan route:list”以确保没有错误并且您的路线已列出。

7-确保你在postman中调用的url正确,方法也正确。

请记住,如果您在 api.php 中的 url 是“/v1/user/register”,那么在 postman 中,您应该在 postman 中有“api/v1/user/register”。这意味着您的最终网址将是“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”。

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

以上是关于404 - 未找到存在 Laravel 8 的 Passport Api 路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 + nginx - 来自公共/未加载的 app.css 和 app.js 资源 - 未找到 404

加载资源失败:服务器使用 laravel 8 / ajax 响应状态为 404(未找到)

Laravel API 路由 404 未找到修复?

ajax获取数据请求url未找到但已经存在,Laravel 8

使用 Laravel/ajax 获取 http://localhost:8000/= 404(未找到)

Laravel 有时显示 404 not found 页面