控制器
控制器都放在 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 Specification
接口文档生成和接口测试
在通过 Swagger 注释的方式定义好接口文档后,可以通过本地开发环境查看和测试接口。
一、将 Swagger UI的资源拷贝到public目录中
执行以下命令:
二、生成指定目录的Swagger API Josn
以 AftersalesBundle 举例如下:
执行完命令后,默认会在 storage/app/apidocs 目录下生成类似 售后单商家端调用接口[1.0].json文件。
可通过在 .env 中新增配置改变存储目录名称
三、启动服务查看和测试接口
可以通过 PHP 内置 server 快速启动
访问地址为:http://127.0.0.1:8085/api-doc 本机开发时,还需要将测试接口的地址修改为本地环境:
使用技巧: 在开发过程中可以,每次修改接口文档都需要重新生成接口文档,可以这样使用命令:
Last updated
Was this helpful?