首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel只在特定的路由上工作,其他则抛出404错误。

Laravel只在特定的路由上工作,其他则抛出404错误。
EN

Stack Overflow用户
提问于 2020-04-30 20:29:40
回答 1查看 934关注 0票数 0

更新:运行php artisan route:clear解决了问题,但只解决了部分问题。在运行命令并成功使用API之后,我调用的路由将再次从路由表缓存中消失,并迫使我再次运行该命令。我不知道为什么会这样。

我正在尝试使用我设置的Laravel,但由于某种原因,我只能使用这三条路径中的一条,而另两条则只能使用404。

代码语言:javascript
复制
Route::post('/login', 'API\UserController@login'); //this works

Route::group(['middleware' => ['auth:api']], function () {
    Route::post('/roles/all', 'API\RoleController@getAll'); //this doesn't work - error 404
    Route::post('/permissions/all', 'API\PermissionController@getAll'); //this doesn't work - error 404
});

路由指向正确的位置,函数存在,并且我通过Postman进行的调用具有正确的参数(url示例:'http://localhost:8000/api/roles/all',GET call,授权字段中的auth令牌)。

我是否将路由放在中间件内部或外部也无关紧要(如果它与oauth2令牌或中间件本身有问题有关)。

下面是我试图调用的一个函数的示例:

代码语言:javascript
复制
public function getAll()
{
    $role = Role::all();
    return response()->json(['role' => $role], 200);
}

编辑:以下是php手工路由的输出:list

代码语言:javascript
复制
+--------+----------+----------------------------------------------------------+-----------------------------------+---------------------------------------------------------------------------+------------+
| Domain | Method   | URI                                                      | Name                              | Action
                           | Middleware |
+--------+----------+----------------------------------------------------------+-----------------------------------+---------------------------------------------------------------------------+------------+
|        | POST     | api/login                                                |                                   | App\Http\Controllers\API\UserController@login  
                           | api        |
|        | GET|HEAD | oauth/authorize                                          | passport.authorizations.authorize | Laravel\Passport\Http\Controllers\AuthorizationController@authorize       | web,auth   |
|        | DELETE   | oauth/authorize                                          | passport.authorizations.deny      | Laravel\Passport\Http\Controllers\DenyAuthorizationController@deny        | web,auth   |
|        | POST     | oauth/authorize                                          | passport.authorizations.approve   | Laravel\Passport\Http\Controllers\ApproveAuthorizationController@approve  | web,auth   |
|        | POST     | oauth/clients                                            | passport.clients.store            | Laravel\Passport\Http\Controllers\ClientController@store                  | web,auth   |
|        | GET|HEAD | oauth/clients                                            | passport.clients.index            | Laravel\Passport\Http\Controllers\ClientController@forUser                | web,auth   |
|        | PUT      | oauth/clients/{client_id}                                | passport.clients.update           | Laravel\Passport\Http\Controllers\ClientController@update                 | web,auth   |
|        | DELETE   | oauth/clients/{client_id}                                | passport.clients.destroy          | Laravel\Passport\Http\Controllers\ClientController@destroy                | web,auth   |
|        | POST     | oauth/personal-access-tokens                             | passport.personal.tokens.store    | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@store     | web,auth   |
|        | GET|HEAD | oauth/personal-access-tokens                             | passport.personal.tokens.index    | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@forUser   | web,auth   |
|        | DELETE   | oauth/personal-access-tokens/{token_id}                  | passport.personal.tokens.destroy  | Laravel\Passport\Http\Controllers\PersonalAccessTokenController@destroy   | web,auth   |
|        | GET|HEAD | oauth/scopes                                             | passport.scopes.index             | Laravel\Passport\Http\Controllers\ScopeController@all                     | web,auth   |
|        | POST     | oauth/token                                              | passport.token                    | Laravel\Passport\Http\Controllers\AccessTokenController@issueToken        | throttle   |
|        | POST     | oauth/token/refresh                                      | passport.token.refresh            | Laravel\Passport\Http\Controllers\TransientTokenController@refresh        | web,auth   |
|        | GET|HEAD | oauth/tokens                                             | passport.tokens.index             | Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@forUser | web,auth   |
|        | DELETE   | oauth/tokens/{token_id}                                  | passport.tokens.destroy           | Laravel\Passport\Http\Controllers\AuthorizedAccessTokenController@destroy | web,auth   |
|        | POST     | telescope/telescope-api/cache                            |                                   | Laravel\Telescope\Http\Controllers\CacheController@index                  | telescope  |
|        | GET|HEAD | telescope/telescope-api/cache/{telescopeEntryId}         |                                   | Laravel\Telescope\Http\Controllers\CacheController@show                   | telescope  |
|        | POST     | telescope/telescope-api/commands                         |                                   | Laravel\Telescope\Http\Controllers\CommandsController@index               | telescope  |
|        | GET|HEAD | telescope/telescope-api/commands/{telescopeEntryId}      |                                   | Laravel\Telescope\Http\Controllers\CommandsController@show                | telescope  |
|        | POST     | telescope/telescope-api/dumps                            |                                   | Laravel\Telescope\Http\Controllers\DumpController@index                   | telescope  |
|        | POST     | telescope/telescope-api/events                           |                                   | Laravel\Telescope\Http\Controllers\EventsController@index                 | telescope  |
|        | GET|HEAD | telescope/telescope-api/events/{telescopeEntryId}        |                                   | Laravel\Telescope\Http\Controllers\EventsController@show                  | telescope  |
|        | POST     | telescope/telescope-api/exceptions                       |                                   | Laravel\Telescope\Http\Controllers\ExceptionController@index              | telescope  |
|        | PUT      | telescope/telescope-api/exceptions/{telescopeEntryId}    |                                   | Laravel\Telescope\Http\Controllers\ExceptionController@update             | telescope  |
|        | GET|HEAD | telescope/telescope-api/exceptions/{telescopeEntryId}    |                                   | Laravel\Telescope\Http\Controllers\ExceptionController@show               | telescope  |
|        | POST     | telescope/telescope-api/gates                            |                                   | Laravel\Telescope\Http\Controllers\GatesController@index                  | telescope  |
|        | GET|HEAD | telescope/telescope-api/gates/{telescopeEntryId}         |                                   | Laravel\Telescope\Http\Controllers\GatesController@show                   | telescope  |
|        | POST     | telescope/telescope-api/jobs                             |                                   | Laravel\Telescope\Http\Controllers\QueueController@index                  | telescope  |
|        | GET|HEAD | telescope/telescope-api/jobs/{telescopeEntryId}          |                                   | Laravel\Telescope\Http\Controllers\QueueController@show                   | telescope  |
|        | POST     | telescope/telescope-api/logs                             |                                   | Laravel\Telescope\Http\Controllers\LogController@index                    | telescope  |
|        | GET|HEAD | telescope/telescope-api/logs/{telescopeEntryId}          |                                   | Laravel\Telescope\Http\Controllers\LogController@show                     | telescope  |
|        | POST     | telescope/telescope-api/mail                             |                                   | Laravel\Telescope\Http\Controllers\MailController@index                   | telescope  |
|        | GET|HEAD | telescope/telescope-api/mail/{telescopeEntryId}          |                                   | Laravel\Telescope\Http\Controllers\MailController@show                    | telescope  |
|        | GET|HEAD | telescope/telescope-api/mail/{telescopeEntryId}/download |                                   | Laravel\Telescope\Http\Controllers\MailEmlController@show                 | telescope  |
|        | GET|HEAD | telescope/telescope-api/mail/{telescopeEntryId}/preview  |                                   | Laravel\Telescope\Http\Controllers\MailHtmlController@show                | telescope  |
|        | POST     | telescope/telescope-api/models                           |                                   | Laravel\Telescope\Http\Controllers\ModelsController@index                 | telescope  |
|        | GET|HEAD | telescope/telescope-api/models/{telescopeEntryId}        |                                   | Laravel\Telescope\Http\Controllers\ModelsController@show                  | telescope  |
|        | POST     | telescope/telescope-api/monitored-tags                   |                                   | Laravel\Telescope\Http\Controllers\MonitoredTagController@store           | telescope  |
|        | GET|HEAD | telescope/telescope-api/monitored-tags                   |                                   | Laravel\Telescope\Http\Controllers\MonitoredTagController@index           | telescope  |
|        | POST     | telescope/telescope-api/monitored-tags/delete            |                                   | Laravel\Telescope\Http\Controllers\MonitoredTagController@destroy         | telescope  |
|        | POST     | telescope/telescope-api/notifications                    |                                   | Laravel\Telescope\Http\Controllers\NotificationsController@index          | telescope  |
|        | GET|HEAD | telescope/telescope-api/notifications/{telescopeEntryId} |                                   | Laravel\Telescope\Http\Controllers\NotificationsController@show           | telescope  |
|        | POST     | telescope/telescope-api/queries                          |                                   | Laravel\Telescope\Http\Controllers\QueriesController@index                | telescope  |
|        | GET|HEAD | telescope/telescope-api/queries/{telescopeEntryId}       |                                   | Laravel\Telescope\Http\Controllers\QueriesController@show                 | telescope  |
|        | POST     | telescope/telescope-api/redis                            |                                   | Laravel\Telescope\Http\Controllers\RedisController@index                  | telescope  |
|        | GET|HEAD | telescope/telescope-api/redis/{telescopeEntryId}         |                                   | Laravel\Telescope\Http\Controllers\RedisController@show                   | telescope  |
|        | POST     | telescope/telescope-api/requests                         |                                   | Laravel\Telescope\Http\Controllers\RequestsController@index               | telescope  |
|        | GET|HEAD | telescope/telescope-api/requests/{telescopeEntryId}      |                                   | Laravel\Telescope\Http\Controllers\RequestsController@show                | telescope  |
|        | POST     | telescope/telescope-api/schedule                         |                                   | Laravel\Telescope\Http\Controllers\ScheduleController@index               | telescope  |
|        | GET|HEAD | telescope/telescope-api/schedule/{telescopeEntryId}      |                                   | Laravel\Telescope\Http\Controllers\ScheduleController@show                | telescope  |
|        | POST     | telescope/telescope-api/toggle-recording                 |                                   | Laravel\Telescope\Http\Controllers\RecordingController@toggle             | telescope  |
|        | POST     | telescope/telescope-api/views                            |                                   | Laravel\Telescope\Http\Controllers\ViewsController@index                  | telescope  |
|        | GET|HEAD | telescope/telescope-api/views/{telescopeEntryId}         |                                   | Laravel\Telescope\Http\Controllers\ViewsController@show                   | telescope  |
|        | GET|HEAD | telescope/{view?}                                        | telescope                         | Laravel\Telescope\Http\Controllers\HomeController@index                   | telescope  |
+--------+----------+----------------------------------------------------------+-----------------------------------+---------------------------------------------------------------------------+------------+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 21:02:59

新路线的缺失可能是因为Laravel在为缓存的线路提供服务。验证这一点的一种快速方法是运行php artisan route:list

如果路线不存在,那就证实了这一理论。解决方案是运行php artisan route:clear,它告诉laravel清除路由缓存,这样就可以从路由文件中新获取路由。

这样做之后,再次运行php artisan route:list。错过的路线现在就应该出现,并且可以进入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61532193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档