php – laravel中的Api版本控制:路由取决于“接受”标题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – laravel中的Api版本控制:路由取决于“接受”标题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1473字,纯文字阅读大概需要3分钟。
内容图文
![php – laravel中的Api版本控制:路由取决于“接受”标题](/upload/InfoBanner/zyjiaocheng/824/7720b18eca15419c9ea9d053377f3239.jpg)
由于我想在接受标头上触发端点,因此我创建了一个中间件来识别使用客户端的版本:
// ApiVersionMiddleware
public function handle($request, Closure $next)
{
$route = $request->route();
$actions = $route->getAction();
$actions['uses'] = str_replace(
'{api}',
$request->header('api-version'),
$actions['uses']
);
$route->setAction($actions);
return $next($request);
}
然后我更改了默认的RouteServiceProvider命名空间:
class RouteServiceProvider extends ServiceProvider {
// protected $namespace = 'App\Http\Controllers'; // default value
protected $namespace = null;
.
.
}
最后,在我的routes.php文件中,我有:
Route::group(['middleware' => 'api-version'], function()
{
Route::resource('items', 'App\Http\Controllers\{api}\ItemsController', ['only' => ['show', 'index', 'store', 'destroy']]);
});
我试图在HttpKernel类中注册中间件而不是分组路由定义,但它不起作用.
我想知道是否有更好的方法来实现API版本控制.
>我想为每个版本都有一个routes.php文件:v1-routes.php,v2-routes.php等等.
>我不喜欢在routes.php中对路由定义进行分组的想法,只是为了访问{api}值.有没有其他方法可以找出我应该触发哪个控制器?
谢谢.
解决方法:
我想你可以在你的routes.php上尝试这样的东西我还没有测试但应该工作
switch (Request::header('api-version')) {
case 'v2':
include_once('routes_v2.php');
break;
default:
include_once('routes_v1.php');
}
并且在route_v …. php文件中定义路由,就像你正常做的那样.
UPDATE
执行此操作的正确方法是在RouteServiceProvider的map函数中.您将只有两个路径文件.
您可以在dingo / api包中轻松管理多个版本的api.它将为您节省大量时间.
内容总结
以上是互联网集市为您收集整理的php – laravel中的Api版本控制:路由取决于“接受”标题全部内容,希望文章能够帮你解决php – laravel中的Api版本控制:路由取决于“接受”标题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。