如何从Laravel中的API路由调用Api控制器?

时间:2019-04-19 08:20:05

标签: laravel api

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

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

当我以http://localhost:8000/api/v1/test的形式访问网址时,由于类Cotrollers \ Api \ AuthController不存在,我遇到了错误。

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'));

5 个答案:

答案 0 :(得分:2)

取消注释->namespace($this->namespace)行。

答案 1 :(得分:1)

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

但是AuthController驻留在App\Http\Controllers命名空间中,而不是Api命名空间中。

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

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";
    }
}

答案 2 :(得分:0)

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

namespace App\Http\Controllers\Api;

答案 3 :(得分:0)

检查您的控制器名称空间

<?php

 namespace App\Http\Controllers\Api;

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

 class AuthController extends Controller
 {


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

答案 4 :(得分:0)

您需要在此处进行更改,

runtime: nodejs12

handlers:
  - url: /
    secure: always
    static_files: celbux-frontend-ng/index.html
    upload: celbux-frontend-ng/index.html

  #  Routing rules for resources, css, js, images etc. Any file with format filename.ext
  - url: /(.*\.(.+))$
    secure: always
    static_files: celbux-frontend-ng/\1
    upload: celbux-frontend-ng/(.*\.(.+))$

  #  Routing rule for Angular Routing
  - url: /(.*)
    secure: always
    static_files: celbux-frontend-ng/index.html
    upload: celbux-frontend-ng/index.html

在RouteServiceProvider.php中添加

App\Providers\RouteServiceProvider.php

赞:

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

就这样! 请告诉我是否可以解决您的问题。

相关问题