Регистрация Dingo Api в RouteServiceProvider
Я читал, что таким образом можно указать пространство имен для Динго
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', ['namespace' => 'App\Http\Controllers'], function ($api) {
$api->get('sites', 'SiteController@index');
$api->get('sites/{site}', 'SiteController@show');
$api->post('sites', 'SiteController@store');
$api->put('sites/{site}', 'SiteController@update');
$api->delete('sites/{site}', 'SiteController@delete');
});
Тем не менее, у меня есть несколько файлов с маршрутами API, так что я не хочу связываться с пространством имен и хотел бы указать пространство имен в Laravel таким образом
protected function mapDingoApiRoutes() {
Route::group([
'middleware' => 'api',
'namespace' => $this->namespace,
], function ($api) {
require base_path('routes/api/sites.api.php');
require base_path('routes/api/skills.api.php');
require base_path('routes/api/socials.api.php');
});
}
Однако оказалось, что Динго не видит эту декларацию пространства имен, и я не могу сделать что-то вроде $api->group()
1 ответ
Решение
Решено таким образом
...
use Dingo\Api\Routing\Router;
class RouteServiceProvider extends ServiceProvider
{
...
public function map()
{
$this->mapDingoApiRoutes(app('Dingo\Api\Routing\Router'));
$this->mapWebRoutes();
}
protected function mapDingoApiRoutes(Router $api) {
$api->group([
'version' => 1,
'middleware' => 'api',
'namespace' => $this->namespace,
], function ($api) {
require base_path('routes/api/sites.api.php');
require base_path('routes/api/skills.api.php');
require base_path('routes/api/socials.api.php');
});
}
...
}