简体   繁体   English

Dingo Api 在 RouteServiceProvider 中注册

[英]Dingo Api registering in RouteServiceProvider

I've read that it's possible to specify namespace for Dingo in that way我读过可以通过这种方式为 Dingo 指定命名空间

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

However, I've got multiple files with API routes so that I don't want to mess it with namespace and would like to specify namespace in Laravel way like that但是,我有多个带有 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');
        });
    }

However it turned out that Dingo doesn't see this namespace declaration and I'm not able to make something like $api->group()然而事实证明,Dingo 没有看到这个命名空间声明,我不能做类似$api->group()

Solved that way是这样解决的

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

...
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM