路由

ecshopx 采用 Dingo API 来构建和管理 API。

为了避免与项目路由冲突,dingo/api 将会使用其专属的路由实例。 在 bootstrap/route.php 中定义了API 路由的实例:

$api = app('Dingo\Api\Routing\Router');

路由定义

ecshopx 前端包含了 admin管理端、shop 管理端、小程序、PC 和 H5 等终端,所以在routes 文件下,我们对路由做了分组:

  • admin

  • api

  • frontapi

  • shopapi

  • super

  • thirdparty

每个 Bundle 的路由根据需求定义在routes文件夹下的分组中,路由文件名称为业务名称,路由定义是必须定义版本号,默认为 V1,定义了一条路由就定义了一个接口。

路由定义的语法请参考 Dingo API,以 AftersalesBundle 为例:

定义路由

$api->version('v1', function($api) {
    // 售后相关api
    $api->group(['namespace' => 'AftersalesBundle\Http\Api\V1\Action', 'middleware' => ['api.auth', 'activated', 'shoplog'], 'providers' => 'jwt'], function($api) {
        $api->get('/aftersales', ['name' => '获取售后列表', 'as' => 'aftersales.list', 'uses' => 'Aftersales@getAftersalesList']);
    });

});

其中

'uses' => 'Aftersales@getAftersalesList'

Aftersales为对用控制器类名,getAftersalesList为方法名。

AftersalesBundle的路由会存在于以下几个分组:

  • routes/api/aftersales.php

  • routes/frontapi/aftersales.php

  • routes/shopapi/aftersales.php

路由注册

在定义路由之后,必须手工注册到bootstrap/route.php中,才可以使用。

比如 AftersalesBundle 新增了一组 admin 的路由,我们定义文件路径为:

routes/admin/aftersales.php

我们需要将此文件加入到bootstrap/route.php中:

<?PHP

...
require __DIR__.'/../routes/admin/aftersales.php';
...

Last updated