jmhc / laravel-api
Laravel restful api.
Requires
- php: ^7.3
- ext-json: *
- ext-openssl: *
- jenssegers/agent: ^2.0
- jmhc/laravel-api-lang: ^1.0
- jmhc/laravel-database: ^8.0
- jmhc/laravel-log: ^8.0
- jmhc/laravel-support: ^8.0
This package is auto-updated.
Last update: 2025-03-08 11:18:49 UTC
README
安装配置
使用以下命令安装:
composer require jmhc/laravel-api
发布文件[可选]:
// 发布所有文件 php artisan vendor:publish --tag=jmhc-api // 只发布配置文件 php artisan vendor:publish --tag=jmhc-api-config // 只发布迁移文件 php artisan vendor:publish --tag=jmhc-api-migrations
使用说明
环境变量值参考:env
restful参考: restful
快速使用
中间件
- 必须注册全局中间件
Jmhc\Restful\Middleware\ParamsHandlerMiddleware
- 可选中间件查看 中间件列表
异常处理
- 修改
App\Exceptions\Handler
继承的方法为Jmhc\Restful\Handlers\ExceptionHandler
- 其他异常捕获重写父类
customResponse()
方法,内容参考response
使用路由服务提供者
- 修改
App\Providers\RouteServiceProvider
继承的方法为Jmhc\Restful\Providers\JmhcRouteServiceProvider
- 路由服务提供者会自动扫描
routes
目录生成路由
示例代码
// route Route::get('tests', 'TestController@index'); // controller use Jmhc\Restful\Controllers\BaseController; use \Jmhc\Restful\Traits\ResourceControllerTrait; class TestController extends BaseController { use ResourceControllerTrait; } // service use \Jmhc\Restful\Services\BaseService; class TestService extends BaseService { public function index() { $this->success('this is tests'); } }
控制器
- 直接继承
Jmhc\Restful\Controllers\BaseController
模型
- 可选继承
Jmhc\Restful\Models\BaseModel
、Jmhc\Restful\Models\BasePivot
、Jmhc\Restful\Models\UserModel
、Jmhc\Restful\Models\VersionModel
服务层(逻辑层)
- 直接继承
Jmhc\Restful\Services\BaseService
控制器
需继承
Jmhc\Restful\Controllers\BaseController
- 可使用
Jmhc\Restful\Traits\RequestInfoTrait
里的参数 - 可使用
Jmhc\Restful\Traits\UserInfoTrait
里的参数、方法
模型
普通模型
需继承
Jmhc\Restful\Models\BaseModel
- 可使用
Jmhc\Database\Traits\DatabaseTrait
里的方法
中间表模型
需继承
Jmhc\Restful\Models\BasePivot
- 可使用
Jmhc\Database\Traits\DatabaseTrait
里的方法
服务层(逻辑层)
需继承
Jmhc\Restful\Services\BaseService
- 可使用
Jmhc\Restful\Traits\RequestInfoTrait
里的参数 - 可使用
Jmhc\Restful\Traits\UserInfoTrait
里的参数、方法
中间件
用法加粗为必须调用
中间件 | 别名 | 用法 | 需要实现的契约或继承模型 |
---|---|---|---|
Jmhc\Restful\Middleware\ParamsHandlerMiddleware |
jmhc.params.handler |
参数处理 | --- |
Jmhc\Restful\Middleware\ConvertEmptyStringsToNullMiddleware |
jmhc.convert.empty.strings.to.null |
转换空字符串为null | --- |
Jmhc\Restful\Middleware\TrimStringsMiddleware |
jmhc.trim.strings |
清除字符串空格 | --- |
Jmhc\Restful\Middleware\RequestLockMiddleware |
jmhc.request.lock |
请求锁定 | --- |
Jmhc\Restful\Middleware\RequestLogMiddleware |
jmhc.request.log |
记录请求日志(debug) | --- |
Jmhc\Restful\Middleware\CheckVersionMiddleware |
jmhc.check.version |
检测应用版本 | Jmhc\Restful\Contracts\VersionModelInterface Jmhc\Restful\Models\VersionModel |
Jmhc\Restful\Middleware\CheckSignatureMiddleware |
jmhc.check.signature |
验证请求签名 | --- |
Jmhc\Restful\Middleware\CheckTokenMiddleware |
jmhc.check.token |
检测token,设置用户数据 | Jmhc\Restful\Contracts\UserModelInterface Jmhc\Restful\Models\UserModel |
Jmhc\Restful\Middleware\CheckSdlMiddleware |
jmhc.check.sdl |
单设备登录,需要复写 Jmhc\Restful\Handlers\ExceptionHandler->sdlHandler() |
--- |
异常处理
App\Exceptions\Handler
继承Jmhc\Restful\Handlers\ExceptionHandler
其他异常捕获调用父类
response()
方法并重写,参考Jmhc\Restful\Handlers\ExceptionHandler->response()
服务提供者
API服务提供者
Jmhc\Restful\Providers\JmhcApiServiceProvider
- 注册路由中间件
- 注册命令
- 合并配置
- 发布文件
契约服务提供者
Jmhc\Restful\Providers\JmhcContractServiceProvider
- 绑定契约
Jmhc\Restful\Contracts\RequestParamsInterface
实现 - 绑定契约
Jmhc\Restful\Contracts\AgentInterface
实现 - 绑定契约
Jmhc\Restful\Contracts\UserModelInterface
实现 - 绑定契约
Jmhc\Restful\Contracts\VersionModelInterface
实现
路由服务提供者
Jmhc\Restful\Providers\JmhcRouteServiceProvider
默认不启用
- 注册
base_path('routes')
下面所有 php 文件到路由
trait介绍
RequestInfoTrait.php
Jmhc\Restful\Traits\RequestInfoTrait
请求信息绑定
使用类:
Jmhc\Restful\Controllers\BaseController
Jmhc\Restful\Services\BaseService
ResourceControllerTrait.php
Jmhc\Restful\Traits\ResourceControllerTrait
资源控制器 trait
ResourceServiceTrait.php
Jmhc\Restful\Traits\ResourceServiceTrait
资源服务 trait
ResultThrowTrait.php
Jmhc\Restful\Traits\ResultThrowTrait
异常抛出辅助
UserInfoTrait.php
Jmhc\Restful\Traits\UserInfoTrait
用户信息绑定
使用类:
Jmhc\Restful\Controllers\BaseController
Jmhc\Restful\Services\BaseService
工具类介绍
Agent.php
Jmhc\Restful\Utils\Agent
请求 Agent 类
SdlCache.php
Jmhc\Restful\Utils\SdlCache
单设备登录类
Token.php
Jmhc\Restful\Utils\Token
令牌相关类