【问题标题】:How to call an Api Controller from API route in laravel?如何从 laravel 中的 API 路由调用 Api 控制器?
【发布时间】:2019-09-09 13:00:58
【问题描述】:

我已经安装了 jwt 身份验证并创建了一个控制器,即 AuthController Inside Api Directory。我已将 routes/api.php 中的定义为:

Route::group(['prefix'=>'v1', 'namespace' => 'Api'],function($app){
    Route::get('/test', function(){
        return "HEllo";
    });
    Route::get('test',              'AuthController@test');
});

当我点击 url 为:http://localhost:8000/api/v1/test 时,我收到错误,因为 Class Cotrollers\Api\AuthController 不存在。

授权控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class AuthController extends Controller
{


    public function test() {
        return "Hello";
    }
}

RouteServiceProvider.php:

Route::prefix('api')
    // ->middleware('api')
    // ->namespace($this->namespace) ->group(base_path('routes/api.php'));

【问题讨论】:

    标签: laravel api


    【解决方案1】:

    这里需要修改,

    App\Providers\RouteServiceProvider.php
    

    在RouteServiceProvider.php中添加

    protected $namespace = 'Path\To\Controllers';
    

    喜欢:

    protected $namespace = 'App\Http\Controllers';
    

    就是这样! 如果这解决了您的问题,请告诉我。

    【讨论】:

      【解决方案2】:

      取消注释-&gt;namespace($this-&gt;namespace) 行。

      【讨论】:

      • Route::prefix('api') // ->middleware('api') // ->namespace($this->namespace) ->group(base_path('routes/api. php'));
      • 是的。请取消注释“->命名空间”行并检查。
      • 我已经整理了问题以包含您的 php,并整理了包含答案的答案。将来您不应该发布要求澄清的答案,因为它很难理解,而且问题本身并不包含必要的信息 - 让其他人更难帮助 OP。
      【解决方案3】:

      在您的Route::group 语句中,您已将路由组的命名空间定义为'Api'

      但 AuthController 位于 App\Http\Controllers 命名空间中,而不是 Api 命名空间中。

      要解决此问题,请在 App\Http\Controllers 中添加一个 Api 命名空间并将其引用到那里(最佳做法是在 Controllers 目录中创建一个名为 Api 的目录,以便目录结构遵循命名空间): p>

      AuthController.php

      namespace App\Http\Controllers\Api;
      
      use Illuminate\Http\Request;
      use App\Http\Controllers\Controller;
      
      class AuthController extends Controller
      {
          public function test() {
              return "Hello";
          }
      }
      

      【讨论】:

      • 现在我收到 Class Api\AuthController 不存在错误
      • 尝试运行composer dump-autoload 来更新作曲家自动加载器中的类引用
      【解决方案4】:

      将 Auth 控制器命名空间定义更改为:

      namespace App\Http\Controllers\Api;
      

      【讨论】:

      • 没有效果,得到同样的错误 Class Api\AuthController 不存在
      猜你喜欢
      • 2016-09-12
      • 2017-02-10
      • 1970-01-01
      • 2022-01-04
      • 2018-08-06
      • 2021-09-06
      • 2021-01-18
      • 2020-03-23
      • 2021-08-02
      相关资源
      最近更新 更多