Laravel 5.6 루트 를 통 해 API 버 전 을 제어 하 는 간단 한 방법
2151 단어 Laravel5.6경로API컨트롤
API 가 교체 되면 서 새로운 버 전 은 기 존 버 전의 기능 을 계승 하고 기 존의 기능 을 수정 하고 확장 해 야 한다.이때 각 버 전의 인 터 페 이 스 를 호 환 하기 위해 서 는 버 전 관리 가 필요 하 다.
요청 버 전 구분:
요청 한 header 에 app-version:1.0.1 과 같은 버 전 정 보 를 추가 합 니 다.
laravel 에서 얻 을 수 있 는 방법:
Request::header('app-version');
파일 경로:1.0.1 버 전의 UserController,파일 경로 는
app/Http/Controllers/Api/v1d0d1/UserController.php
1.0.2 버 전app/Http/Controllers/Api/v1d0d2/UserController.php
1.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');
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
경로 유형경로는 디렉토리와 파일의 위치를 나타내는 문자열입니다. 절대 경로와 상대 경로의 두 가지가 있습니다. 다음은 절대 경로와 상대 경로에 대해 설명합니다. 절대 경로는 루트 디렉토리에서 지정하는 경로입니다. Mac의 모...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.