dezsidog / laravel-change-way
通过头部更改分发的控制器
0.5.3
2018-05-22 02:50 UTC
Requires
- php: >=7.1.0
- laravel/framework: ^5.5.0
Requires (Dev)
- phpunit/phpunit: ~7.0
This package is auto-updated.
Last update: 2024-09-17 19:57:45 UTC
README
通过头部更改分发的控制器。
英语不好
即将进行测试。
特性
重写Laravel控制器分发器,以便根据头部中的version
字段来更改操作。
安装
composer require dezsidog/laravel-change-way
修改app/Http/Kernel.php
中的基础类,从Illuminate\Foundation\Http\Kernel
修改为Dezsidog\Http\Kernel
用法
编写路由实体
Route::get('test', "V1Controller@test"); Route::group(['version' => 'v2'], function(){ Route::get('test', "V2Controller@test"); Route::get('test2', "V2Controller@test2"); Route::get('test3', "V1Controller@test"); });
创建控制器App\Http\Controllers\V1Controller
。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class V1Controller extends Controller { public function test() { return 'v1'; } }
创建控制器App\Http\Controllers\V2Controller
。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class V2Controller extends Controller { public function test() { return 'v2'; } public function test2() { return 'v2'; } }
此包将根据头部中的version
字段来决定使用哪个test
方法。
public function testVersion() { $response = $this->getJson('api/test'); $this->assertEquals('v1', $response->content()); $response = $this->getJson('api/test',['version' => 'v2']); $this->assertEquals('v2', $response->content()); $response = $this->getJson('api/test2', ['version' => 'v2']); $this->assertEquals('v2', $response->content()); $response = $this->getJson('api/test2'); $response->assertStatus(404); $response = $this->getJson('api/test3',['version' => 'v2']); $this->assertEquals('v1', $response->content()); }