rob*_*rob 0 php api laravel laravel-5
我有一个小的 crud 前端来存储信息。前端控制器称为ShowsController. 我想从 api 中获取所有节目。
所以我的routes/web.php包含:
Route::resource('shows', 'ShowsController');
Run Code Online (Sandbox Code Playgroud)
那太完美了,而且效果很好。
我的routes/api.php包含:
Route::resource('shows', 'ShowsController', ['only' => ['index']]);
Run Code Online (Sandbox Code Playgroud)
路线/api/shows应该给我显示为json。决定前端和API我把ShowsController成Controllers/Api folder
其中Controllers/Api/ShowsController包含:
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Show;
class ShowsController extends Controller
{
public function index(){
return response()
->json(Show::all())->withHeaders([
'Content-Type' => 'text/json',
'Access-Control-Allow-Origin' => '*'
]);
}
}
Run Code Online (Sandbox Code Playgroud)
而且我也将其更改RouteServiceProvider为:
protected function mapApiRoutes()
{
Route::group([
'middleware' => 'api',
'namespace' => 'Api',
'prefix' => 'api',
], function ($router) {
require base_path('routes/api.php');
});
}
Run Code Online (Sandbox Code Playgroud)
但是命令php artisan route:list给了我一个例外:
[ReflectionException]
类 Api\ShowsController 不存在
为什么laravel 在api 目录中找不到定义的ShowsController?
我不知道您使用的是哪个版本的 Laravel,但在 5.4 中,我默认使用此方法:
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
Run Code Online (Sandbox Code Playgroud)
如果您替换namespace($this->namespace)为namespace($this->namespace . '\Api').
| 归档时间: |
|
| 查看次数: |
2181 次 |
| 最近记录: |