Laravel 5.6 루트 를 통 해 API 버 전 을 제어 하 는 간단 한 방법

Laravel 버 전:5.6
API 가 교체 되면 서 새로운 버 전 은 기 존 버 전의 기능 을 계승 하고 기 존의 기능 을 수정 하고 확장 해 야 한다.이때 각 버 전의 인 터 페 이 스 를 호 환 하기 위해 서 는 버 전 관리 가 필요 하 다.
요청 버 전 구분:
요청 한 header 에 app-version:1.0.1 과 같은 버 전 정 보 를 추가 합 니 다.
laravel 에서 얻 을 수 있 는 방법:

Request::header('app-version');
파일 경로:
1.0.1 버 전의 UserController,파일 경로 는app/Http/Controllers/Api/v1d0d1/UserController.php1.0.2 버 전app/Http/Controllers/Api/v1d0d2/UserController.php1.0.2 버 전 주의 1.0.1 기 존 기능 을 사용 하려 면 기 존 클래스 를 계승 해 야 합 니 다.

use App\Http\Controllers\Api\UserController as UserCtrl;
class UserController extends UserCtrl
{
  ...
}
버 전 관리
버 전 분석 방법:

function getRouteContoller($controllerName)
{
  $base_path = 'App\Http\Controllers\Api\\';
  //   
  $app_version = Request::header('app-version');
  if (!$app_version) return $controllerName;
  //    
  $version_path = 'v' . str_replace('.', 'd', $app_version) . '\\';
  $controllerPath = $base_path . $version_path . $controllerName;
  if (class_exists($controllerPath)) {
    return $version_path . $controllerName;
  }
  //    
  $versionNumbers = intval(str_replace('.', '', $app_version));
  for ($i = $versionNumbers - 1; $i > 0; $i--) {
    $version_path = 'v' . implode('d', str_split($i)) . '\\';
    $controllerPath = $base_path . $version_path . $controllerName;
    if (class_exists($controllerPath)) {
      return $version_path . $controllerName;
    }
  }
  return $controllerName;
}
주:이 방법 은 1.0.2 버 전 을 v1d0d 2 로 분석 하고 해당 클래스 가 존재 하 는 지 판단 하 며 존재 하면 클래스 의 경 로 를 직접 되 돌려 줍 니 다.존재 하지 않 으 면 존재 하 는 클래스 를 찾 을 때 까지 1.0.1 버 전 클래스 가 존재 하 는 지 찾 습 니 다.
경로 파일

Route::post('login', getRouteContoller('UserController').'login');
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기