我的所有 API 颠覆都需要 Controller.php 吗?

Do I need to have Controller.php in all my API subversion?

我正在尝试在我的 Laravel 项目中创建一个 API 目录,但我收到以下错误...

Class 'App\Http\Controllers\Controller' not found

我曾尝试在我的 API 控制器上使用 use App\Http\Controllers\Controller;,但没有成功。

我的 API 类 定义为...

class SyncController extends Controller {...}
class TimecardController extends Controller {...}

我很确定错误来自 extends Controller 部分。

App\Http\Controllers\Controller 我有 Controller.php。我克服这个问题的一种方法是将 Controller.php 复制到 App\Http\Controllers\Api\v2\ 并更改该控制器的名称空间以匹配它所在的位置 (namespace App\Http\Controllers\Api\v2;)

我不认为这是正确的,因为应该有一种方法可以从 API 子目录中的控制器引用 Controller.php。

../Controllers/Controller.php和API是一个子目录,../Controllers/Api/v2/SyncController.php

如有任何帮助,我们将不胜感激。

谢谢

------------编辑------------

我的 api 路线看起来像这样

Route::group(['prefix' => 'api/v2'], function () {
   Route::get('sync', 'Api\v2\SyncController@sync')->middleware('auth:api');
   Route::post('timecard', 'Api\v2\TimecardController@create')->middleware('auth:api');
});

找不到控制器 class,因为 API 控制器不在默认的 Laravel 控制器目录中。您需要将控制器 class 添加为 use statement。然后自动加载器就能找到它。

namespace App\Http\Controllers\Api\v2;

use App\Http\Controllers\Controller;

class SyncController extends Controller {...}

在您动手的同时,您可能还想将 auth:api 中间件添加到整个组。更安全高效。

Route::group(['prefix' => 'api/v2', 'middleware' => 'auth:api', 'namespace' => 'Api\v2'], function () {
   Route::get('sync', 'SyncController@sync');
   Route::post('timecard', 'TimecardController@create');
});