lswl / laravel-api
Laravel RESTful API。
Requires
- php: ^7.3|^8.0
- ext-json: *
- ext-mbstring: *
- ext-openssl: *
- jenssegers/agent: ^2.0
- lswl/laravel-database: ^8.0
- lswl/laravel-log: ^8.0
- lswl/laravel-support: ^8.0
- lswl/sign: ^1.0
README
安装配置
使用以下命令安装:
composer require lswl/laravel-api
发布文件[可选]:
// 发布所有文件
php artisan vendor:publish --tag=lswl-api
// 只发布配置文件
php artisan vendor:publish --tag=lswl-api-config
// 只发布迁移文件
php artisan vendor:publish --tag=lswl-api-migrations
使用说明
环境变量值参考:env
restful参考: restful
快速使用
中间件
- 必须注册全局中间件
Lswl\Api\Middleware\ParamsHandlerMiddleware
- 可选中间件查看 中间件列表
异常处理
- 修改
App\Exceptions\Handler
继承的方法为Lswl\Api\Handlers\ExceptionHandler
- 其他异常捕获重写父类
customResponse()
方法,内容参考response
使用路由服务提供者
- 修改
App\Providers\RouteServiceProvider
继承的方法为Lswl\Api\Providers\LswlRouteServiceProvider
- 路由服务提供者会自动扫描
routes
目录生成路由
示例代码
// route Route::get('tests', 'TestController@index'); // controller use Lswl\Api\Controllers\BaseController; use \Lswl\Api\Traits\ResourceControllerTrait; class TestController extends BaseController { use ResourceControllerTrait; } // service use \Lswl\Api\Services\BaseService; class TestService extends BaseService { public function index() { $this->success('this is tests'); } }
控制器
- 直接继承
Lswl\Api\Controllers\BaseController
模型
- 可选继承
Lswl\Api\Models\BaseModel
、Lswl\Api\Models\BasePivot
、Lswl\Api\Models\UserModel
、Lswl\Api\Models\VersionModel
服务层
- 直接继承
Lswl\Api\Services\BaseService
数据访问层
- 直接继承
Lswl\Api\Daos\BaseDao
控制器
需继承
Lswl\Api\Controllers\BaseController
- 可使用
Lswl\Api\Traits\RequestInfoTrait
里的参数 - 可使用
Lswl\Api\Traits\UserInfoTrait
里的参数、方法
模型
普通模型
需继承
Lswl\Api\Models\BaseModel
- 可使用
Lswl\Database\Traits\DatabaseTrait
里的方法
中间表模型
需继承
Lswl\Api\Models\BasePivot
- 可使用
Lswl\Database\Traits\DatabaseTrait
里的方法
服务层
需继承
Lswl\Api\Services\BaseService
- 可使用
Lswl\Api\Traits\RequestInfoTrait
里的参数 - 可使用
Lswl\Api\Traits\UserInfoTrait
里的参数、方法
数据访问层
需继承
Lswl\Api\Daos\BaseDao
- 可使用
Lswl\Api\Traits\DaoSelectTrait
方法
中间件
用法加粗为必须调用
异常处理
App\Exceptions\Handler
继承Lswl\Api\Handlers\ExceptionHandler
其他异常捕获调用父类
response()
方法并重写,参考Lswl\Api\Handlers\ExceptionHandler->response()
服务提供者
API服务提供者
Lswl\Api\Providers\LswlApiServiceProvider
- 注册路由中间件
- 注册命令
- 合并配置
- 发布文件
契约服务提供者
Lswl\Api\Providers\LswlContractServiceProvider
- 绑定契约
Lswl\Api\Contracts\RequestParamsInterface
实现 - 绑定契约
Lswl\Api\Contracts\AgentInterface
实现 - 绑定契约
Lswl\Api\Contracts\UserModelInterface
实现 - 绑定契约
Lswl\Api\Contracts\VersionModelInterface
实现
路由服务提供者
Lswl\Api\Providers\LswlRouteServiceProvider
默认不启用
- 注册
base_path('routes')
下面所有 php 文件到路由
trait介绍
RequestInfoTrait.php
Lswl\Api\Traits\RequestInfoTrait
请求信息绑定
使用类
Lswl\Api\Controllers\BaseController
Lswl\Api\Services\BaseService
ResourceControllerTrait.php
Lswl\Api\Traits\ResourceControllerTrait
资源控制器 trait
ResourceServiceTrait.php
Lswl\Api\Traits\ResourceServiceTrait
资源服务 trait
ResultThrowTrait.php
Lswl\Api\Traits\ResultThrowTrait
异常抛出辅助
UserInfoTrait.php
Lswl\Api\Traits\UserInfoTrait
用户信息绑定
使用类
Lswl\Api\Controllers\BaseController
Lswl\Api\Services\BaseService
工具类介绍
Agent.php
Lswl\Api\Utils\Agent
请求 Agent 类
SdlCache.php
Lswl\Api\Utils\SdlCache
单设备登录类
Token.php
Lswl\Api\Utils\Token
令牌相关类