控制器

控制器都放在 Http 目录,与 路由 相对应,控制器也按照终端进行了分组:

  • Admin

  • Api

  • Frontapi

  • Shopapi

  • Super

  • Thirdparty

每个分组下的目录结构如下:

  • Api

    • V1

      • Action 控制器实际所在目录

      • Swagger Swagger定义目录

定义控制器

下面是一个基础控制器类的例子。需要注意的是,该控制器继承了 Laravel 的基类控制器。该基类控制器提供了一些便利的方法,比如 middleware 方法,该方法可以为控制器行为添加中间件:

namespace AftersalesBundle\Http\Api\V1\Action;

use EspierBundle\Jobs\ExportFileJob;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller as Controller;

use AftersalesBundle\Services\AftersalesService;

use Dingo\Api\Exception\ResourceException;

use EspierBundle\Traits\GetExportServiceTraits;

class Aftersales extends Controller
{
    use GetExportServiceTraits;

    public function getAftersalesDetail($aftersales_bn)
    {
        $companyId = app('auth')->user()->get('company_id');
        $aftersalesService = new AftersalesService();
        $result = $aftersalesService->getAftersalesInfo($companyId, $aftersales_bn);

        return $this->response->array($result);
    }
}

定义 API 文档

在 EcshopX 中每一个控制器方法都是一个 api都是一个接口,接口的出参和入参都是通过 注释来定义的,采用Swagger格式来定义。

控制器分组下的每一个版本都是一组 API ,定义一组 api 需要两步,以 AftersalesBundle 举例如下:

1、在 Swagger 目录下定义分组信息

定义 API 基本信息

定义 API Tag

根据需求定义接口所需数据对象:

2、在 Action 目录中的控制器的方法定义接口

Swagger 定义参数详见 OpenAPI Specificationarrow-up-right

接口文档生成和接口测试

在通过 Swagger 注释的方式定义好接口文档后,可以通过本地开发环境查看和测试接口。

一、将 Swagger UI的资源拷贝到public目录中

执行以下命令:

二、生成指定目录的Swagger API Josn

以 AftersalesBundle 举例如下:

执行完命令后,默认会在 storage/app/apidocs 目录下生成类似 售后单商家端调用接口[1.0].json文件。

可通过在 .env 中新增配置改变存储目录名称

三、启动服务查看和测试接口

可以通过 PHP 内置 server 快速启动

访问地址为:http://127.0.0.1:8085/api-docarrow-up-right 本机开发时,还需要将测试接口的地址修改为本地环境:

使用技巧: 在开发过程中可以,每次修改接口文档都需要重新生成接口文档,可以这样使用命令:

Last updated

Was this helpful?