laravel-merge-request maintained by xaboy
LaravelMergeRequest
laravel框架 根据路由规则创建/发起虚拟请求,可以在当前请求中发起多个虚拟请求
安装
composer require xaboy/laravel-merge-request
说明
示例
路由规则
//获取验证码
Route::get('captcha', 'AuthController@captcha');
//登录并返回用户id
//例: [user_id=>1]
Route::post('login','AuthController@login');
//根据用户id获取用户信息
Route::get('user/info/{id}','AuthController@userInfo');
合并上面三条路由规则
use Xaboy\MergeRequest\MergeRequest;
$mergeRequest = new MergeRequest([
'loginInfo'=>'auth/loginInfo',
'login'=>[
'path'=>'login',
'method'=>'post',
'post'=>[
'username'=>'username',
'password'=>'password',
]
],
'userInfo'=>[
'path'=>'user/info/{id}',
'route'=>[
'id'=>'${mr:login.user_id}' //模板变量
]
]
])
发起虚拟请求
$mergeData = $mergeRequest->run();
规则
path: 路由规则/请求地址/路由别名/控制器@方法method: 请求方式,默认为GETroute: 路由参数post: POST 参数,默认为当前请求的 POST 参数get: GET 参数,默认为当前请求的 GET 参数files: FILE 参数,默认为当前请求的 FILE 参数parameter: 自定义参数,默认为当前请求的自定义参数
以上配置项都支持模板变量
事件
-
executing: 发起模拟请求时触发参数:
$key: 生成规则的 key&$mergeData: 该请求之前已请求到的数据
-
executed: 发起模拟请求之后触发参数:
$res: 该请求返回的数据$key: 生成规则的 key&$mergeData: 该请求之前已请求到的数据
-
loaded: 所有模拟请求结束后触发参数:
&$mergeData: 所有模拟请求返回的数据
示例
class Observer{
public function executing($key, $mergeData){}
public function executed($res, $key, $mergeData){}
public function loaded($mergeData){}
}
//绑定
$mergeRequest->observer(Observer::class);
模板变量
${mr:key.res.data}
参考上面的示例
更多示例
路由规则
Route::post('user/update/{id}','AuthController@updateUser')->name('user.update');
规则1
[
'path'=>'user/update/{id}',
'method'=>'post',
'route'=>[
'id'=>1
]
]
规则2
[
'path'=>'AuthController@updateUser',
'method'=>'post',
'route'=>[
'id'=>1
]
]
规则3
[
'path'=>'user.update',
'method'=>'post',
'route'=>[
'id'=>1
]
]
规则4
[
'path'=>'user/update/1',
'method'=>'post'
]